请教一个关于用 Python 将数据库的数据写入 excel 导出的问题

2019-07-03 17:00:59 +08:00
 gyy028012
写入 excel 用的是 xlsxwriter 包,当每次导出的数据量较大的时候(可能是 50w-100W 行之间),生成的 excel 文件就会出现打不开的情况,提示需要修复文件,修复完也无法打开;
之后又尝试使用 openpyxl 包,还是一样的打不开文件;
有大佬可以帮忙解答这个问题吗?
2515 次点击
所在节点    Python
15 条回复
superalsrk
2019-07-03 17:23:43 +08:00
你的 excel 是有固定格式嘛, 如果没有固定格式的话 append 到一个 csv 里面吧
TtiGeR
2019-07-03 17:23:54 +08:00
Excel 单个工作表的上限大约是 104 万行,但一般不建议做那么大的,不能分割么?超过上限的肯定打不开,大文件的话可以试试 64 位的 Excel。
loading
2019-07-03 17:26:17 +08:00
excel 有最大行限制。
试一下用 csv 格式?
c00WKmdje2wZLrSI
2019-07-03 17:29:25 +08:00
先用 navicate 导出成 excel 看看能不能打开,不能的话就不是包的问题了
Hosomi
2019-07-03 17:32:29 +08:00
这行数也太多了吧,试一下用 HDF5 ?
gyy028012
2019-07-03 18:03:18 +08:00
@superalsrk 没有固定的格式,我尝试过使用 pandas 的 to_csv 方法直接生成 csv 文件,也打不开
gyy028012
2019-07-03 18:05:14 +08:00
@TtiGeR 应该是没有超过 EXCEL 上限的,使用的是 2013 版的 office,数据量也是控制在 100 万以下。
gyy028012
2019-07-03 18:19:59 +08:00
@loading 试了 csv 也不行
gyy028012
2019-07-03 18:21:03 +08:00
@c00WKmdje2wZLrSI 我们是 SQLserver 的数据库,用 SQLserver 导出是可以打开的
FYFX
2019-07-03 18:23:46 +08:00
@gyy028012 你是用什么程序去打开 csv 的?
gyy028012
2019-07-03 18:27:33 +08:00
@Hosomi 只能使用 excel 表格的格式,其他格式的业务部门用不了
gyy028012
2019-07-03 18:40:13 +08:00
@FYFX 用的是 office 打开的
xpresslink
2019-07-04 00:05:20 +08:00
解决不了,只能找微软了。
EXCEL 文件超过 40M 大小可靠性就变得非常不好了。很容易丢损坏丢数据。
krixaar
2019-07-04 08:01:47 +08:00
如果是带中文的数据,csv 编码 gbk 或者用数据--导入来添加( 13 以上版本可能需要添加传统向导),不直接双击。有些时候中文版的 Excel 直接双击打开会把 UTF-8 编码的中文数据乱码掉,然后导致行数判断失败,就不停的要修复但是修复不成功。

另外,这么大的数据量用 Excel 真的不合适。
wongyusing
2019-07-06 23:01:51 +08:00
先尝试把 Excel 切成几个小文件。再读取呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/579709

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX