CsvHelper创建空白文件

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?