使用workbook.save()写入Excel单元格时无法保存内容的问题
问题
我需要在现有工作簿的工作表中写入“No Data to Display”字符串,用来标识特定业务检查无代码异常。但编写代码后发现,使用配置文件路径config.sod_report_full_name时,单元格内容无法保存;换成硬编码的普通字符串路径就能正常工作。因为路径需要动态获取,所以想找解决办法。
现有代码
file_source = config.sod_report_full_name workbook = openpyxl.load_workbook(filename=file_source) worksheet = workbook['Shareclass Check 2'] print("Writing - No Data to Display") worksheet['C5'] = 'No Data to Display' workbook.template = False workbook.save(file_source) workbook.close() print("No exceptions for Shareclass 2 check")
解决方案
1. 验证配置路径有效性
先打印配置路径,确认是否存在拼写错误、空格或特殊字符:
print("配置路径:", config.sod_report_full_name)
若路径包含空格或非标准字符,用os.path.normpath()标准化处理:
import os file_source = os.path.normpath(config.sod_report_full_name)
2. 检查文件权限与状态
- 确保程序对目标文件有读写权限,若路径指向网络共享目录或系统保护文件夹,需调整权限或更换存储位置。
- 确认目标Excel文件未被其他程序(如Excel客户端)打开,否则会因文件锁定导致保存失败。
3. 显式控制文件加载与保存参数
加载时保持默认data_only=False确保可编辑单元格,保存前确认模板状态:
workbook = openpyxl.load_workbook(filename=file_source, data_only=False) # 强制关闭模板模式 workbook.template = False workbook.save(file_source)
4. 捕获异常定位问题
添加异常捕获代码,直接获取错误详情:
import os from openpyxl import load_workbook try: file_source = os.path.normpath(config.sod_report_full_name) if not os.path.exists(file_source): raise FileNotFoundError(f"文件不存在: {file_source}") workbook = load_workbook(file_source) worksheet = workbook['Shareclass Check 2'] worksheet['C5'] = 'No Data to Display' workbook.template = False workbook.save(file_source) workbook.close() print("No exceptions for Shareclass 2 check") except Exception as e: print(f"保存失败: {str(e)}")
内容的提问来源于stack exchange,提问作者PandasPython
相关产品推荐
相关产品推荐

