使用EPPLUS缓慢加载.CSV文件
我有大量的.csv文件,我需要在应用一些格式后转换为.xslx。
包含大约20 000行和7列的文件需要12分钟才能转换。 如果文件包含超过100 000,则运行时间超过1小时。
遗憾的是,这对我来说是不可接受的。
代码段:
var format = new ExcelTextFormat(); format.Delimiter = ';'; format.Encoding = new UTF7Encoding(); format.Culture = new CultureInfo(System.Threading.Thread.CurrentThread.CurrentCulture.ToString()); format.Culture.DateTimeFormat.ShortDatePattern = "dd.mm.yyyy"; using (ExcelPackage package = new ExcelPackage(new FileInfo(file.Name))){ ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(Path.GetFileNameWithoutExtension(file.Name)); worksheet.Cells["A1"].LoadFromText(new FileInfo(file.FullName), format); }
我已经validation它是使用LoadFromText命令花费的时间。
有没有办法加快速度? 我试过没有“format”参数,但加载时间是一样的。
您遇到了什么加载时间?
我的建议是自己阅读文件,然后使用库创建文件。
读取CSV的代码可以简单如下:
List lines = new List (); using (StreamReader reader = new StreamReader("file.csv")) { String line; while((line = reader.ReadLine()) != null) { lines.add(line); } } //Now you got all lines of your CSV //Create your file with EPPLUS foreach(String line in lines) { var values = line.Split(';'); foreach(String value in values) { //use EPPLUS library to fill your file } }
我遇到了与LoadFromCollection
非常相似的问题。 EPPlus必须考虑其方法中的所有情况,以便一般地加载数据,因此存在大量开销。 我最终缩小了该方法的瓶颈,最终只是手动将数据从集合转换为EPPlus中的Excel Cell对象。 可能在我的出口中节省了几分钟。
关于如何读取csv数据的大量示例:
C#从CSV文件中读取特定值
上述就是C#学习教程:使用EPPLUS缓慢加载.CSV文件分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/955968.html