如何解决CsvHelper创建空白文件
我需要从Collection创建一个.csv或.txt文件。我正在使用CsvHelper库,并且开发了以下扩展方法:
public static class CsvWriter
{
public static void Write<TMapping,TModel>(this IEnumerable<TModel> items,string fullname,string separator,Encoding encoding,string culture)
where TMapping : ClassMap,new()
{
var inputFileDescription = new CsvConfiguration(new CultureInfo(culture))
{
Delimiter = separator,Encoding = encoding,IgnoreBlankLines = true
};
using (var sr = new StreamWriter(fullname))
using (var csv = new CsvHelper.CsvWriter(sr,inputFileDescription))
{
sr.AutoFlush = true;
csv.Configuration.RegisterClassMap<TMapping>();
csv.WriteRecords(items);
csv.NextRecord();
}
}
}
上面,遵循领域,模型和映射的类别:
public class FuturesFiles
{
public DateTime TradeDate { get; set; }
public string BmfAccount { get; set; }
public string Side { get; set; }
public decimal Quantity { get; set; }
public decimal? Strike { get; set; }
public string Type { get; set; }
public string Payout { get; set; }
public decimal? Price { get; set; }
public string Ticker { get; set; }
public string broker { get; set; }
public string Counterparty { get; set; }
public string Desk { get; set; }
public string Exchange { get; set; }
public DateTime ArrivalDate { get; set; }
public string Currency { get; set; }
public int ContractId { get; set; }
}
public class FuturesFilesModel
{
public DateTime TradeDate { get; set; }
public string BmfAccount { get; set; }
public string Side { get; set; }
public decimal Quantity { get; set; }
public decimal? Strike { get; set; }
public string Type { get; set; }
public string Payout { get; set; }
public decimal? Price { get; set; }
public string Ticker { get; set; }
public string broker { get; set; }
public string Counterparty { get; set; }
public string Desk { get; set; }
public string Exchange { get; set; }
public DateTime ArrivalDate { get; set; }
public string Currency { get; set; }
public int ContractId { get; set; }
}
public class FuturesFilesMappings : ClassMap<FuturesFilesModel>
{
public FuturesFilesMappings()
{
Map(i => i.TradeDate).Name("Trade Date").Index(1);
Map(i => i.BmfAccount).Name("A/C Ref").Index(2);
Map(i => i.Side).Name("B/S").Index(3);
Map(i => i.Quantity).Name("Lots").Index(4);
Map(i => i.Type).Name("Type").Index(5);
Map(i => i.Payout).Name("Price").Index(6);
Map(i => i.Price).Name("Price").Index(7);
Map(i => i.Ticker).Name("Ric").Index(8);
Map(i => i.broker).Name("Exec Firm Name").Index(9);
Map(i => i.Counterparty).Name("Contraparte").Index(10);
Map(i => i.Desk).Name("MESA").Index(11);
Map(i => i.Exchange).Name("Exchange").Index(12);
Map(i => i.ArrivalDate).Name("Delivery").Index(13);
Map(i => i.Currency).Name("Curr").Index(14);
Map(i => i.ContractId).Name("AGE").Index(15);
}
}
在存储库中,我具有上述用于调用Write
函数以编写.csv文件的功能:
public class FuturesFilesRepository
{
public void WriteCsvFile(string fileName,IEnumerable<FuturesFiles> futuresFiles)
{
var futuresFilesModel = futuresFiles.Select(oper =>
{
var model = new FuturesFilesModel();
CreateModelFutures(oper,model);
return model;
}).ToList();
futuresFilesModel.Write<FuturesFilesMappings,FuturesFilesModel>(fileName,";",System.Text.Encoding.UTF8,"pt-BR");
}
void CreateModelFutures(FuturesFiles oper,FuturesFilesModel model)
{
model.TradeDate = oper.TradeDate;
model.Type = oper.Type;
model.Ticker = oper.Ticker;
model.Strike = oper.Strike;
model.Side = oper.Side;
model.Quantity = oper.Quantity;
model.Price = oper.Price;
model.Payout = oper.Payout;
model.Exchange = oper.Exchange;
model.Desk = oper.Desk;
model.Currency = oper.Currency;
model.Counterparty = oper.Counterparty;
model.ContractId = oper.ContractId;
model.broker = oper.broker;
model.BmfAccount = oper.BmfAccount;
model.ArrivalDate = oper.ArrivalDate;
}
但是,无论我做什么或更改什么,要生成的文件总是空白。我已经看到了构建.csv编写器的其他方法,但是,我所看到的一切都与我正在尝试的工作非常相似。有人可以告诉我我在做什么错吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。