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".
我已经从 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".