Csharp/C#教程:使用EPPLUS缓慢加载.CSV文件分享


使用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

(0)
上一篇 2021年11月22日
下一篇 2021年11月22日

精彩推荐