python openpyxl load_workbook,修改excel单元格内容后保存,再打开Excel提示“部分内容有问题。是否让我们尽量尝试恢复?”
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方法解决了问题。