码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • python3.5版本使用openpyxl报‘NoneType‘ object has no attribute ‘read‘问题


    在新装的ubuntu16.04系统使用默认的python3.5时,需要用到openpyxl,于是直接按照下述指令装载

    sudo pip3 install openpyxl

    使用时,会提示版本不匹配,百度搜索,说openpyxl的3.x.x版本已不再支持python3.5,起码要使用python3.6。

    考虑到新装机的普适性,尝试寻找python3.5适配的解决办法,百度到一个说指定版本2.6.0就可以。

    sudo pip3 install openpyxl==2.6.0

    发现可以import使用了。

    但是在调用程序时,在wb.save(full_path)时又报了错误:AttributeError: 'NoneType' object has no attribute 'read',如下图所示。

    1. wb.save(full_path)
    2. File "/usr/local/lib/python3.5/dist-packages/openpyxl/workbook/workbook.py", line 396, in save
    3. save_workbook(self, filename)
    4. File "/usr/local/lib/python3.5/dist-packages/openpyxl/writer/excel.py", line 295, in save_workbook
    5. writer.save()
    6. File "/usr/local/lib/python3.5/dist-packages/openpyxl/writer/excel.py", line 276, in save
    7. self.write_data()
    8. File "/usr/local/lib/python3.5/dist-packages/openpyxl/writer/excel.py", line 76, in write_data
    9. self._write_worksheets()
    10. File "/usr/local/lib/python3.5/dist-packages/openpyxl/writer/excel.py", line 226, in _write_worksheets
    11. self._write_comment(ws)
    12. File "/usr/local/lib/python3.5/dist-packages/openpyxl/writer/excel.py", line 180, in _write_comment
    13. vml = fromstring(self.workbook.vba_archive.read(ws.legacy_drawing))
    14. AttributeError: 'NoneType' object has no attribute 'read'

    开始搜到的解决办法:在打开文件时,带上参数keep_vba=True

    wb = load_workbook(full_path, keep_vba=True)

    这样修改后执行确实没问题了,但是重复执行时,又报错了,且搜索的解答中有留言说多次执行后,文件就损坏打不开了。所以这个解决办法并不是最终的解决办法。

    继续搜索找解决办法,外网有留言说这就是个bug,已在后续的版本中解决了。

    回想自己为了适配ubuntu16.04默认的python3.5版本,装载openpyxl时,指定了版本2.6.0(也是百度搜到的解决办法),所以可能用新的版本就可以解决这个问题。

    openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files — openpyxl 3.0.10 documentation

    官网上找到各个版本的介绍:https://openpyxl.readthedocs.io

    发现2.6.x系列最终的版本是2.6.4版本,确认一下是否支持python3.5,明确的说明了支持python2.7和python3.5,所以嘛,重新装载2.6.4版本:

    sudo pip3 install openpyxl==2.6.4

     问题彻底搞定。

    ’

    
                    
  • 相关阅读:
    Linux(CentOS-7)-全面详解(学习总结---从入门到深化)
    数字化管理平台建设实践
    创业有什么好的项目吗?
    Python 数据结构与算法
    [报错解决](Error Creating bean with name ‘xxx‘)类问题解决思路
    java面试时如何做好5分钟自我介绍?
    python经典百题之求前!的和
    酷睿i7 12650h和i7 11800h区别 i712650h和i711800h选哪个好
    洛谷P2520 裴蜀定理,多限制的不定方程解的构造
    2023年中国背光显示面板分类、市场规模及企业分析[图]
  • 原文地址:https://blog.csdn.net/zerfew/article/details/126155530
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号