openpyxl 打开一个excel(.xlsx),保存后再打开,文件损坏,需要修复

config_workbook = openpyxl.load_workbook(config_path)
config_workbook.save(os.path.join(output_path, 'result.xlsx'))

方法一:

首先,我注释掉了所有 向excel 写入的操作,然后保存文件,再次打开,仍然出现 文件部分内容有问题。

所以,我认为是文件本身的问题,虽然直接打开源文件是没有报错的,但是我将excel提示要修复后的文件保存到源文件,再次运行程序,问题解决

方法二:

更新内容:

我再一次遇到相似问题,但是原文件似乎没什么问题,所以在我的尝试下,找到了方法二

wb = openpyxl.load_workbook(template_path, read_only=False, data_only=True)

只需要设置 read_only=False 即可,所以文件损坏的原因可能是,在某些情况下,文件的默认属性是只读的,强行写入导致的损坏

File "c:\Users\09043203\AppData\Local\miniconda3\envs\excelprocess\Lib\site-packages\openpyxl\reader\excel.py", line 348, in load_workbook reader.read() File "c:\Users\09043203\AppData\Local\miniconda3\envs\excelprocess\Lib\site-packages\openpyxl\reader\excel.py", line 293, in read self.read_workbook() File "c:\Users\09043203\AppData\Local\miniconda3\envs\excelprocess\Lib\site-packages\openpyxl\reader\excel.py", line 153, in read_workbook self.parser.parse() File "c:\Users\09043203\AppData\Local\miniconda3\envs\excelprocess\Lib\site-packages\openpyxl\reader\workbook.py", line 46, in parse package = WorkbookPackage.from_tree(node) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "c:\Users\09043203\AppData\Local\miniconda3\envs\excelprocess\Lib\site-packages\openpyxl\descriptors\serialisable.py", line 83, in from_tree obj = desc.from_tree(el) ^^^^^^^^^^^^^^^^^^ File "c:\Users\09043203\AppData\Local\miniconda3\envs\excelprocess\Lib\site-packages\openpyxl\descriptors\sequence.py", line 94, in from_tree return [self.expected_type.from_tree(el) for el in node] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "c:\Users\09043203\AppData\Local\miniconda3\envs\excelprocess\Lib\site-packages\openpyxl\descriptors\sequence.py", line 94, in <listcomp> return [self.expected_type.from_tree(el) for el in node] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "c:\Users\09043203\AppData\Local\miniconda3\envs\excelprocess\Lib\site-packages\openpyxl\descriptors\serialisable.py", line 103, in from_tree return cls(**attrib) ^^^^^^^^^^^^^ TypeError: BookView.__init__() got an unexpected keyword argument 'uid'
03-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值