栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Python

2022-08-04

Python 更新时间:发布时间: 百科书网 趣学号

1.今天主要的问题集中在打包上,但最后发现问题竟然不是打包,开始我测试代码,一切正常,然后一打包,突然就无法读excel了,我上网一搜,确实有相关问题,导致我更加相信是打包的问题,网上说pyinstaller只支持特定版本的openpyxl,而且版本比较低,2.3.X的,我一看我的版本,已经到了3.0,我一下子心灰意冷了,各种百度,各种查,最后也没找到好的解决办法,于是又尝试其它模块,比如xlrd,但是xlrd也有个问题,说是2.0以后只支持xls文档,不支持xlsx文档,而我要读xlsx文档,也不行,换低版本吧,pandas又依赖高版本的,给我直接整傻了,一天都在试图找到新的解决方案,最后终于找到一个能用的,xlwings,但是这东西直接操作office软件,功能确实强大,但我真不想用,没办法,现在只能用这个。

虽然暂时解决了问题,但我还是耿耿于怀打包的问题,于是又是一顿百度,摆着摆着,突然找到一篇博客,说是可能是xlsx文档被加密了,我恍然大悟,虽然不是他说的加密,但我突然想起来公司的excel是加密的,之所以我测试时没问题,是因为之前找it部门加过白名单,python是可以读的,但是打包成exe,这个新的软甲就读不了了,一顿报错,之所以用xlwings不报错,是因为它是直接调用本地的office,这个本来就是可以的,唉,难受,搞了半天,原来不是打包的问题,是文档的问题。但是这个是公司规定,虽然代码没问题,打包么问题,但是策略没法改变,只能先用xlwings顶一阵了,读取也要改成xlwings,用xlwings读取全部数据并组成dataframe,代码如下:

def create_dataframe_by_xw(excel_f):
    app = xw.App(visible=False, add_book=False)
    wb = app.books.open(excel_f)
    ws = wb.sheets.active
    sht = wb.sheets[0]
    all_data = sht.range('a1').expand().value
    print(all_data[0])
    df = pd.DataFrame(all_data[1:],columns=all_data[0])
    return df

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/1034030.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号