【问题标题】:Converting Data to Date Type When Writing with Openpyxl使用 Openpyxl 编写时将数据转换为日期类型
【发布时间】:2021-03-19 14:45:47
【问题描述】:

关于在写入 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”格式的“日期”类型。有什么指点吗?

【问题讨论】:

    标签: python excel datetime openpyxl


    【解决方案1】:

    我认为这可以简单地完成:

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

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

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

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

    【讨论】:

    • 这适用于格式化,但是当我希望它是日期时,单元格的数据类型被列为自定义。你知道我怎样才能格式化写作,所以类型是日期?
    • @NathanAnderson - 我不明白为什么这是必要的,但请参阅编辑。没有 Date 数据类型这样的东西。只有日期格式。日期是一个数字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    相关资源
    最近更新 更多