c# - 使用 EPPLUS 缓慢加载 .CSV 文件

标签 c# epplus

我有大量 .csv 文件需要在应用一些格式后转换为 .xslx。

一个包含大约 20 000 行和 7 列的文件需要 12 分钟才能转换。 如果文件包含超过 100 000 个,它将运行 > 1 小时。

不幸的是,这对我来说是 Not Acceptable 。

代码片段:

        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);
        }

我已经确认是 LoadFromText 命令花费了所用的时间。

有没有办法加快速度? 我试过不使用“格式”参数,但加载时间是一样的。

您遇到的加载时间是多少?

最佳答案

这里我的建议是自己读取文件,然后使用库创建文件。

读取 CSV 的代码可以像这样简单:

List<String> lines = new List<String>();
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
    }
}

关于c# - 使用 EPPLUS 缓慢加载 .CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30709328/

相关文章:

c# - CaSTLe Windsor/DelegatingHandler/IPrincipal 依赖注入(inject) (DI)/ASP.NET Web API 中的控制反转 (IoC)

c# - 支持文档中包含哪些核心元素?

c# - 关于 OfficeOpenXML.ExcelWorksheet 的 MSDN 文档在哪里?

c# - 使用 Epplus 读取 Excel 文件时出现 STG_E_WRITEFAULT

c# - Epplus:如何使 "LoadFromCollection"在模型中使用 [DisplayFormat()] 属性

vb.net - 如何在数据透视表上设置列名称

c# - 区分来自 2 个独立键盘的输入

c# - HttpListener.IsSupported 在 XP SP3 上为 false

c# - 如何去除 Crystal 报表中的小数位

c# - 使用 EPPlus 将 Excel 转换为 DataTable - excel 已锁定以供编辑