openpyxl:将日期转换为数字

openpyxl: converting dates to numbers

我已经从 Google 表格下载了一个 xlsx 文件,由于人们写“4.5”时的语言环境 excel 将其解释为 "the 4th of May"。

使用openpyxl读取文件时,我识别出datetime python类型。

但是当我这样做的时候:

cell.value = float(cell.value.day + cell.value.month / 10.0)

单元格类型未更改为 float,Excel 仍将其视为 date,如下例所示:

>>> import openpyxl as xl
>>> n = xl.Workbook()
>>> s = n.get_active_sheet()
>>> s['A1'] = datetime(2018, 12, 1)
>>> s['A1'].value
datetime.datetime(2018, 12, 1, 0, 0)
>>> s['A1'].value = 2.5
>>> s['A1'].value
datetime.datetime(1900, 1, 2, 12, 0)

如何在单元格上设置值 类型?

编辑:我使用的是 openpyxl 版本 2.4,这里描述的行为不会发生在 2.5 (s['A1'].value == 2.5) but 添加行

>>> n.save('hello.xlsx')

使用 Excel 打开文件,它仍然将其视为日期。

Excel 从应用于数字的数字格式推断日期和时间类型。您拥有的文件就是这种情况。将值设置为 4.5 不会改变这一点,您还需要将数字格式设置为 "General".