使用 EPPLUS 缓慢加载 .CSV 文件

2024-02-19

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

包含大约 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);
        }

我已经验证是 LoadFromText 命令花费了所使用的时间。

有没有办法加快速度? 我尝试过不使用“format”参数,但加载时间是相同的。

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


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

读取 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
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 EPPLUS 缓慢加载 .CSV 文件 的相关文章

随机推荐

  • Hibernate @Inheritance,表作为父级,视图作为子级

    我在 Hibernate 中遇到这种情况 其中两个类之间存在父子关系 但数据库中没有这种关系 因为子类代表视图 而不是表 现在的问题是 要让 Hibernate 满意继承注解 https docs oracle com javaee 7 a
  • JavaFx 图像大小调整

    我有一个 borderPane 顶部有菜单 左侧有一个网格 中间有一个图像 我希望图像的大小与边框中心相同 因为现在图像超出了我的网格 我试过这个 imageView fitWidthProperty bind box widthPrope
  • 删除 R 中选择性 NA 的有价值行[重复]

    这个问题在这里已经有答案了 我有一个像这样的数据框 1 2 abc NA NA NA NA 2 3 abd be f NA NA 4 5 NA NA NA NA NA 现在 我想删除那些包含从第 3 列开始的所有 NA 的行 我正在做这样的
  • 每2秒更换一次图片

    我积累了一点 所以如果有人有任何想法 那会很有帮助 目前该程序正在编译并运行 但我不知道如何完成它 我正在使用日食 我想做的是 当我启动程序时 每 2 秒更换 4 张不同的图片 所以如果您有任何建议 请不要害羞 这是程序 Here is t
  • MySQL 查询和数据透视表

    我的 MySQL 数据库具有以下列标题 month typeOfWork totalHours 我有兴趣根据工作类型和月份显示结果 例如 所有 typeOfWork 条目将显示在左侧第一列中 并且每个字段将汇总每列指定月份中的特定 type
  • 在 Swift 中使用 Parse 获取 Twitter 个人资料图像

    在 Swift 中没有找到任何关于此的信息 所以我问 如何使用 Parse 从 Twitter 获取已登录用户的个人资料图片 用户已经通过解析内部登录 signupController 登录 var username PFUser curr
  • Dask 数据帧并行任务

    我想从数据帧创建功能 附加列 并且我有以下许多功能的结构 遵循本文档https docs dask org en stable delayed best practices html https docs dask org en stabl
  • 有什么办法可以逃避弹性beanstalk环境变量中的“非法字符”?

    我正在尝试为 Rails 应用程序创建一个新的弹性 beanstalk 环境 并且将现有 RDS 实例的详细信息作为环境变量传递 该 RDS 实例是根据前一个 Elastic beanstalk 实例的快照创建的 但是该实例是由 Elast
  • NightwatchJS .elements 返回字符串而不是对象

    我正在使用 nightwatch 并尝试迭代元素列表 但是 当我没有获取对象或元素时 但我得到了一个字符串数组 CODE browser elements css selector ele function r browser perfor
  • Spring Repository 接口中使用 sort() 和 limit() 进行查询

    我是 Spring Data with MongoDB 的新手 希望在我的 MongoRepository 扩展接口中拥有一个自动生成的查询方法 该方法需要过滤 排序和限制 查询如下所示 created is the field I nee
  • 在 QT 中将配置设置保存到 XML 文件吗?

    我想将配置设置保存到 QT 中的 XML 文件并从那里读取它 在 QT 中执行此操作的最佳方法是什么 任何样品 想法都受到高度赞赏 Thanks 您可以使用以下方式注册您的 XML 文件格式QSettings registerFormat
  • CakePHP:验证消息不显示

    我是 cakePHP 的新手 我按照一些教程制作了一个简单的表单 在这个 html 表单上我使用了验证 现在的问题是验证正在工作 但消息没有显示我希望它显示的内容 我尝试了下面的代码 Model public validate array
  • JS - 如何提交表单 onclick 并发送提交按钮

    我需要通过按钮提交表单 这超出了 JavaSript 表单的范围
  • 使用向上/向下滑动动画显示和隐藏视图

    我有一个LinearLayout我想用一个来显示或隐藏Animation每当我改变布局的可见性时 它就会向上或向下推动布局 我见过一些样品 但没有一个适合我的需要 我已经为动画创建了两个 xml 文件 但当我更改动画的可见性时 我不知道如何
  • addClass 不适用于 iPhone Chrome

    changing navbar background color by scrolling window scroll function if this scrollTop gt 20 tab nav addClass tab scroll
  • 使用 imshow 绘制时间序列

    我试图使标题尽可能清晰 尽管我不确定它是否完全清晰 我有三个系列的数据 随时间变化的事件数量 我想做一个代表三个时间序列的子图 你会发现附件是我能想到的最好的 上一个时间序列明显较短 这就是为什么它在此处不可见的原因 我还添加了相应的代码
  • 通过单击图像显示/隐藏 div

    我希望能够单击图像来显示 隐藏 div 带有文本 我已经对一张图像进行了此操作 但我有多个图像需要切换文本 JavaScript 代码 document ready function slidingDiv hide show hide sh
  • 比较 Realm 对象列表

    我想比较 2 个 Realm 对象列表 看看它们是否相同 这是该物体的样子 class ScheduleRealm Object let scheduleList List
  • 使用 JavaScript 在画布中获取鼠标位置

    我正在研究 jquery 和 html5 canvas 我想做的只是一个简单的 html5 绘图示例 当鼠标移动时 我在鼠标下方绘制红色方块 我的代码很简单 但在获取画布内的鼠标光标位置时遇到问题 现在 我正在使用 x event offs
  • 使用 EPPLUS 缓慢加载 .CSV 文件

    我有大量 csv 文件 需要在应用一些格式后将其转换为 xlsx 包含大约 20 000 行和 7 列的文件需要 12 分钟才能转换 如果文件包含超过 100 000 个 则运行时间 gt 1 小时 不幸的是 这对我来说是不能接受的 代码片