gpt4 book ai didi

python - 以编程方式创建大型 Excel 工作表

转载 作者:太空狗 更新时间:2023-10-29 21:47:42 25 4
gpt4 key购买 nike

我们正在使用 OpenPyxl 以 XSLX 格式将 MySQL 内容导出到 Microsoft Excel

https://bitbucket.org/ericgazoni/openpyxl/overview

但是,我们要处理的数据量很大。我们正面临内存不足的情况。表格最多可包含 50000 多行中的 400 列。即使文件很大,也没有大到 Microsoft Excel 或 OpenOffice 应该有问题。我们假设我们的问题主要源于 Python 以不够有效的方式将 XML DOM 结构保存在内存中这一事实。

编辑:Eric,OpenPyxl 的作者,指出有一个选项可以让 OpenPyxl 以固定的内存使用量写入。然而,这并没有完全解决我们的问题,因为我们仍然存在原始速度问题以及其他占用 Python 过多内存的问题。

现在我们正在寻找更有效的方法来创建 Excel 文件。最好使用 Python,但如果找不到好的解决方案,我们可能还想看看其他编程语言。

选项,不分先后,包括

1) 使用 OpenOffice 和 PyUno,希望它们的内存结构比 OpenPyxl 更高效,TCP/IP 调用桥足够高效

2) Openpyxl 使用 xml.etree。 Python lxml(libxml2 native 扩展)是否会更有效地使用 XML 内存结构,是否可以直接用 lxml 插件替换 xml.etree,例如猴子补丁? (如果有明显的好处,稍后可以将更改贡献回 Openpyxl)

3) 从 MySQL 导出到 CSV,然后使用 Python 和文件迭代将 CSV 文件直接后处理到 XSLX

4)使用其他编程语言和库(Java)

指针:

http://dev.lethain.com/handling-very-large-csv-and-xml-files-in-python/

http://enginoz.wordpress.com/2010/03/31/writing-xlsx-with-java/

最佳答案

如果您要使用 Java,您会希望使用 Apache POI,但可能不会使用常规的 UserModel,因为您希望减少内存占用。

相反,看看 BigGridDemo ,它向您展示了如何使用 POI 编写一个非常大的 xlsx 文件,其中大部分工作不在内存中进行。

您可能还会发现 BigGridDemo 中使用的技术同样可以用在 Python 中?

关于python - 以编程方式创建大型 Excel 工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5700896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com