首页 > 解决方案 > 使用 Openpyxl 编写时将数据转换为日期类型

问题描述

关于在写入 Excel 文档时格式化数据的问题,因为我对使用 Openpyxl 有点新。

我有一个 Excel 表,我正在将数据写入其中一列是保存当前日期为“mm/dd/yyyy”格式的列。目前,在写入 Excel 文档时,我的代码将日期重新格式化为“yyyy-mm-dd”格式,并且 excel 文档不将数据识别为“日期”类型,而是识别为“常规”数据类型。

这是我将日期写入工作表的 Python 代码。

from openpyxl import Workbook
from openpyxl import load_workbook
from date time import date

workbookName = "Excel workbook.xlsm"
wb = Workbook()
wb = load_workbook(workbookName, data_only=True, keep_vba=True)
ws = wb["Sheet1"]
rowCount = 2000 
insertRow = rowCount + 7

origDate = date.today()
dateString = datetime.datetime.strftime(origDate, '%m/%d/%Y')
insertDate = datetime.datetime.strptime(dateString, '%m/%d/%Y').date()
dateCell = ws.cell(row = insertRow, column = 1)
dateCell.value = insertDate

wb.save("Excel workbook.xlsm")

因此,例如,如果我使用今天的日期运行此代码03/19/2021,则单元格看起来像2021-03-18类型General

不知道我错过了什么,但我希望插入的单元格具有“mm/dd/yyyy”格式的“日期”类型。任何指针?

标签: pythonexceldatetimeopenpyxl

解决方案


我认为这可以通过以下方式简单地完成:

dateCell.value = origDate
dateCell.number_format = 'mm/dd/yyyy'

请注意,Excel 中没有日期数据类型之类的东西。日期只是一个格式化的数字。“日期”(以及“常规”)只是格式化;单元格的基础价值是独立的且不变的。

尽管如果您真的希望单元格显示为“日期”格式而不是“自定义”格式,也许:

dateCell.number_format = 'mm/dd/yyyy;@'

推荐阅读