【问题标题】:Writing xlwt dates with Excel 'date' format用 Excel 'date' 格式编写 xlwt 日期
【发布时间】:2013-06-08 19:30:47
【问题描述】:

我正在使用 xlwt 制作 .xls 电子表格,我需要创建日期单元格。

我已经写出了数字,并设置了数字格式字符串以使它们看起来像日期,但关键是它们实际上并没有被写为日期 - 如果你在 Excel 中格式化单元格,它是一个“自定义”类别而不是“约会”,这很重要。

我可以让 xlwt 真正写“日期”单元格吗?

【问题讨论】:

    标签: python xlwt


    【解决方案1】:

    来自http://www.youlikeprogramming.com/2011/04/examples-generating-excel-documents-using-pythons-xlwt/

    在单元格中输入日期

    import xlwt import datetime workbook = xlwt.Workbook() worksheet = workbook.add_sheet('My Sheet') style = xlwt.XFStyle() style.num_format_str = 'D-MMM-YY' # Other options: D-MMM-YY, D-MMM, MMM-YY, h:mm, h:mm:ss, h:mm, h:mm:ss, M/D/YY h:mm, mm:ss, [h]:mm:ss, mm:ss.0 worksheet.write(0, 0, datetime.datetime.now(), style) workbook.save('Excel_Workbook.xls')

    【讨论】:

    • 谢谢,但这就是我已经在做的事情,但根据我的问题,它不能正常工作。
    • 尝试将单元格格式更改为“常规”。获得预期的浮点数。更改为“日期”格式并显示正确的日期。是否有任何具体原因为何如此重要?
    • 是的,它有效,但恐怕它首先是 Date 确实很重要。我这里只能含糊其辞,说“要求”。
    【解决方案2】:

    如果您使用与 Excel 的内置格式字符串之一(例如 dd/mm/yyy)相对应的格式字符串,该数字将显示在 Excel“日期”类别中。例如:

    import xlwt
    import datetime
    
    workbook = xlwt.Workbook()
    worksheet = workbook.add_sheet('Sheet1')
    
    date_format = xlwt.XFStyle()
    date_format.num_format_str = 'dd/mm/yyyy'
    
    worksheet.write(0, 0, datetime.datetime.now(), date_format)
    
    workbook.save('date_format.xls')
    

    如果您修改此示例以使用格式字符串d/mm/yyy,则该数字将显示在“自定义”类别中。

    注意:以上代码适用于我尝试过的 Excel 版本,但这可能会因地区而异。最好的办法是使用您想要的“日期”格式在 Excel 中格式化一个数字,然后在同一个对话框中,单击“自定义”以查看与“日期”格式相关联的格式字符串。然后在你的程序中使用它。

    另外:Excel XLS 格式中没有任何本机日期类型。所有日期都存储为数字加格式。除了格式字符串之外,没有什么可以将它们与具有格式的任何其他数字区分开来。这是使解析 Excel 文件变得痛苦的原因之一,因为您必须应用启发式方法来确定单元格是否包含日期。

    【讨论】:

    • +1 为例,但应该补充的是,只有一个 ISO 格式字符串,如 '2014-01-23' 将按预期转换(格式将是日期,但内容将是无用的文本字符串);使用实际的 datetime() 对象可以避免这个问题。我没有使用全面的 ISO 字符串(例如“2014-01-23T12:34:56”)对此进行测试,它可能仍然有效——如果其他人知道这个,应该在此处记下。
    • @RyderDain 问题的标题具有误导性,可能应该进行编辑。问题、答案和示例是关于如何使用xlwt 生成内置日期格式与自定义格式。没有讨论生成实际日期。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 2023-01-03
    • 2021-01-23
    • 2021-11-14
    • 2019-06-29
    • 1970-01-01
    • 2013-05-20
    相关资源
    最近更新 更多