python - 使用 pandas 和 openpyxl 时出现 Excel 错误:已修复部分:/xl/worksheets/sheet1.xml 部分带有 XML 错误。HRESULT 0x8000ffff 第 1 行,第 0 列
问题描述
我想出了一个错误,在写入后打开一个 excel 文件。这是我到目前为止所拥有的:
#locate source document
Path = Path(r'C:\Users\username\Test\EXCEL_Test.xlsx')
# open doc and go to active sheet
wb = load_workbook(filename = Path)
ws = wb.active
#add drop down list to each cell in a certain column
dv_v = DataValidation(type="list", formula1='"Y,N"', allow_blank=True)
for cell in ws['D']:
cell = ws.add_data_validation(dv_v)
wb.save(Path)
这些是打开 excel 文件时出现的两个错误:
第一个错误弹出窗口: “我们发现 'EXCEL_Test.xlsx' 中的某些内容存在问题。您希望我们尽可能多地恢复吗?如果您信任此工作簿的来源,请单击是。”
第二个错误弹出窗口: “已修复部分:/xl/worksheets/sheet1.xml 部分带有 XML 错误。HRESULT 0x8000ffff 第 1 行,第 0 列。”
我的数据验证没有出现,并且在尝试打开文件查看 openpyxl 更改时文件出现上述错误。
也许如果有人可以帮助我找出为什么会出现这些错误?Python 以退出代码 0 结束,为什么数据验证在恢复的文件中显示为空白?
解决方案
我认为您使用ws.add_data_validation(dv)
不正确。首先将数据验证分配给 dv,然后将 dv 添加到单元格中。尝试这样做。
import openpyxl
from openpyxl import Workbook
from openpyxl.worksheet.datavalidation import DataValidation
#locate source document
Path = 'C:/Users/username/test/Excel_test.xlsx'
# open doc and go to active sheet
wb = openpyxl.load_workbook(filename = Path)
ws = wb['Sheet1']
#add drop down list to each cell in a certain column
dv = DataValidation(type="list", formula1='"Y,N"', allow_blank=True)
ws.add_data_validation(dv)
# This is the same as for the whole of column D
dv.add('D1:D1048576')
wb.save(Path)
看看这里的文档:https ://openpyxl.readthedocs.io/en/stable/validation.html
推荐阅读
- python - 在覆盖所有客户的同时最大限度地减少商店数量
- python - 无法解析剩余部分:
- count - 在 Teradata 中,SQL 代码用于计算出院后 30 天内的紧急就诊次数
- javascript - ReactJs如何在子组件中获取特定的道具数据
- ffmpeg - 如何在单独的音轨上输入多个音频设备
- python - 什么是更快/更高效,读/写文件或像对象一样的 io 文件?
- c++ - 如何使用 VirtualDesktopManager 界面?
- firebase - 我们可以使用firestore按开始日期对事件进行排序并在结束字段上设置条件吗
- java - 通过 REST 端点处理来自 Spark 应用程序的传入请求
- c++ - 将 shared_ptr
和 shared_ptr的实例 具有相同的原始指针共享引用计数?