在用CsvHelper编写csv字符串/文件的过程中如何替换字符/符号?

问题描述 投票:0回答:1

[在编写csv字符串的过程中,我需要去除行中每一列的一些符号,但我无法在CsvHelper.CsvWriter.ConfigurationCsvHelper.CsvWriter.Context或其他地方找到这种功能。

作为我可以接受的解决方法,我尝试覆盖类ConvertUsing的方法MemberMap<TClass, TMember>,但该方法无法正常工作:

 public class CustomMemberMap < TClass, TMember >: MemberMap < TClass, TMember > {
     public CustomMemberMap(MemberInfo member): base(member) {}

     public override MemberMap < TClass, TMember > ConvertUsing(Func < TClass, string > convertExpression) => base.ConvertUsing(row => convertExpression(row).Replace("\r", "").Replace("\n", ""));
 }

 public class CustomClassMap < TClass >: ClassMap < TClass > where TClass: new() {
     public override MemberMap < TClass, TMember > Map < TMember > (Expression < Func < TClass, TMember >> expression, bool useExistingMap = true) => new CustomMemberMap < TClass, TMember > (base.Map(expression, useExistingMap).Data.Member);
 }

 public sealed class CsvFileMapperAccommodation: CustomClassMap < Accommodation > {
     public CsvFileMapperAccommodation() {
         Map(m => m.Name).Name($ "AccommodationName").ConvertUsing(x => $ "{x.Name}");
         Map(m => m.ExternalKey).Name($ "AccommodationExternalKey").ConvertUsing(x => $ "{x.ExternalKey}");
         Map(m => m.Pension).Name($ "AccommodationPension").ConvertUsing(x => $ "{x.Pension}");
         Map(m => m.Category).Name($ "AccommodationCategory").ConvertUsing(x => $ "{x.Category}");
         Map(m => m.BuyingPrice).Name($ "AccommodationBuyingPrice").ConvertUsing(x => $ "{x.BuyingPrice}");
         Map(m => m.Margin).Name($ "AccommodationMargin").ConvertUsing(x => $ "{x.Margin}");
         Map(m => m.Price).Name($ "AccommodationPrice").ConvertUsing(x => $ "{x.Price}");
         Map(m => m.Quantity).Name($ "AccommodationQuantity").ConvertUsing(x => $ "{x.Quantity}");
         Map(m => m.Supplier).Name($ "AccommodationSupplier").ConvertUsing(x => $ "{x.Supplier}");
     }
 }

该对象(我尝试映射)包含很多属性,因此在输出中我每行大约有300个字段,因此,手动更改对象数据的开头和每个对象的值太复杂且不太美观最后的字段。因此,我仅尝试将此对象映射到一个csv字符串中,希望可以随时对其进行更改。

export-to-csv csvhelper
1个回答
0
投票

我认为创建自定义StringConverter可能会满足您的需求。

© www.soinside.com 2019 - 2024. All rights reserved.