【问题标题】:How to programmatically import csv into excel and use excel formatting?如何以编程方式将 csv 导入 excel 并使用 excel 格式?
【发布时间】:2014-11-11 19:58:30
【问题描述】:

我有一个非常大(> 200 万行)的 csv 文件,该文件正在内部 Web 服务中生成和查看。问题是当这个系统的用户想要导出这个 csv 来运行自定义查询时,他们会在 excel 中打开这些文件。 Excel 正在尽其所能对数字进行格式化,但有些人要求使用带有过滤器之类的 xlsx 格式的数据。

问题归结为:使用python2.7,如何将大型csv文件(> 200万行)读入excel(或多个excel文件)并控制格式? (日期、数字、自动过滤器等)

我对 python 和内部 excel 解决方案持开放态度。

【问题讨论】:

  • 您可以使用openpyxl,但其格式化功能有限。另一种选择是使用powershell,我认为它比openpyxl具有更多的格式化能力
  • 另一种选择是使用 python win32 扩展并使用 excel 的 COM 接口。诀窍是抄袭现有的 VB 脚本。但实际上,这在 VB 或 C# 中可能更容易完成。
  • 我从未使用过 powershell、VB 或 C#。现在 xlsxWriter 的性能非常差,无法真正处理我给它的工作量(即使是从 csv 复制到 xlsx 的这一行)。
  • XlsxWriter 可以处理所有这些功能、格式设置和自动过滤器,但是 200 万行是很多数据,Excel 每个工作表的限制约为 100 万行。确保在 XlsxWriter 中使用 constant_memory 模式,但即便如此,每百万个单元格可能需要大约 15 秒(大概数字)。
  • 我最终获得了所需的性能,方法是使用多处理库在一个进程中对来自 csv 的数据进行规范化,然后将其传递给其他进程以格式化为 excel。当我有更多时间时,我会发布一个包含一些性能统计数据的解决方案的最小示例。

标签: python excel csv xlsxwriter


【解决方案1】:

如果没有关于 csv 中的数据类型的更多信息,或者您对 EXCEL 正确处理这些数据类型的确切问题,很难给您一个准确的答案。

但是,建议查看这个模块 (https://xlsxwriter.readthedocs.org/),它可以在 Python 中用于创建 xlsx 文件。我没用过,但它的功能似乎比你需要的多。

特别是如果您需要在多个文件或工作簿之间进行拆分。而且看起来您可以预先创建过滤器并完全控制格式

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    相关资源
    最近更新 更多