使用openpyxl加载已存在的excel文件,更改单元格中的值然后保存文件时,另一个值(日期)也会更改。我似乎无法找到这种奇怪行为背后的原因/错误。
这是我的excel文件dates.xlsx
:
Title Date
Date1 01.01.1900
Date2 02.01.1900
Date3 03.01.1900
这是我修改单元格值并保存更改的方法:
from openpyxl import load_workbook
fileName = "./dates.xlsx"
wb = load_workbook(filename=fileName)
sheet = wb.active
sheet.cell(row=4, column=3).value = "new value"
wb.save(fileName)
wb.close()
预期结果:
Title Date
Date1 01.01.1900
Date2 02.01.1900
Date3 03.01.1900 new value
实际结果:
Title Date
Date1 00.01.1900
Date2 02.01.1900
Date3 03.01.1900 new value
这只发生在日期。任何想法如何处理这个?
问题实际上与OOXML中的日期规范和OOXML中的一些错误有关。要解决此问题,您可以在保存工作簿时设置iso_dates=True
。这将至少在XML中保存明确的表示。其他应用程序的其他内容(Excel认为序列号0是1900年1月0日)是另一回事。基本上,文件格式根本不适合历史日期。