V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
gyy028012
V2EX  ›  Python

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

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

    另外,这么大的数据量用 Excel 真的不合适。
    wongyusing
        15
    wongyusing  
       2019-07-06 23:01:51 +08:00
    先尝试把 Excel 切成几个小文件。再读取呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2466 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 01:03 · PVG 09:03 · LAX 17:03 · JFK 20:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.