python openpyxl load_workbook,修改excel单元格内容后保存,再打开Excel提示“部分内容有问题。是否让我们尽量尝试恢复?”

python openpyxl load_workbook,修改excel单元格内容后保存,再打开Excel提示“部分内容有问题。是否让我们尽量尝试恢复?”

img

img

img

from openpyxl import load_workbook

workbook_tarfile = load_workbook(targetfile)
sheets_tarfile = workbook_tarfile.sheetnames
booksheet_tarfile_1 = workbook_tarfile[sheets_tarfile[0]]
booksheet_tarfile_1['A1'] = ‘hello’
workbook_tarfile.save(targetfile)

你的hello用了中文的单引号

以下答案引用自GPT-3大模型,请合理使用:

示例

这个问题很可能是Excel文件损坏引起的,可以尝试以下方法来解决:

1.使用openpyxl提供的修复功能。可以使用openpyxl中的 protect_worksheet 方法保护工作簿,以防止在保存时发生损坏:

from openpyxl import load_workbook

workbook_tarfile = load_workbook(targetfile, keep_vba=True)
sheets_tarfile = workbook_tarfile.sheetnames
booksheet_tarfile_1 = workbook_tarfile[sheets_tarfile[0]]
booksheet_tarfile_1['A1'] = ‘hello’

# 保护excel文件
workbook_tarfile.protect_worksheet(sheet_name)                                                        

# 保存excel文件
workbook_tarfile.save(targetfile)

2.如果上述方法无法解决问题,建议使用另一种读取excel文件的方式,比如使用 pandas 读取excel文件,并修改内容,然后再保存到本地:

import pandas as pd

# 读取excel
df = pd.read_excel(targetfile)

# 修改内容
df.loc[0,'A1'] = 'hello'

# 再保存回本地
df.to_excel(targetfile, index=False)

如果我的回答解决了您的问题,请采纳我的回答

建议改为

from openpyxl import load_workbook
path1 = r'C:\Users\Desktop\data.xlsx'  # 可替换为自己的路径
workbook_tarfile = load_workbook(path1)
sheets_tarfile = workbook_tarfile.sheetnames
booksheet_tarfile_1 = workbook_tarfile[sheets_tarfile[0]]
booksheet_tarfile_1['A1'] = 'hello'
workbook_tarfile.save(path1)

1、代码中的‘hello’改为'hello'
2、修改excel时保证你当前的excel文件已关闭
3、如果您的excel文件未修复,建议修改代码后重新执行下程序后再打开看看

初步判断是python库的问题。
另外,我调用shutil.copy复制过来的excel文件,再被load_workbook打开、保存后,有相同问题。
而采用https://blog.csdn.net/weixin_45081575/article/details/124144987的保留格式复制excel内容的方法,创建excel并复制内容,保存后打开就不提示损坏错误了。
因此临时采用上述自实现shutil.copy方法解决了问题。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

https://blog.csdn.net/gc_2299/article/details/124568478