【问题标题】:datetime issue with xlrd & xlwt python libsxlrd 和 xlwt python 库的日期时间问题
【发布时间】:2010-06-25 14:47:09
【问题描述】:

我正在尝试将一些日期从一个 Excel 电子表格写入另一个。目前,我在 excel 中得到了一个不是我想要的表示形式,例如:“40299.2501157407”

我可以将日期很好地打印到控制台,但是写入 excel 电子表格似乎无法正常工作——数据必须是 excel 中的日期类型,我不能有文本版本。

这是读取日期的行:

date_ccr = xldate_as_tuple(sheet_ccr.cell(row_ccr_index, 9).value, book_ccr.datemode)

这是写出日期的那一行:

row.set_cell_date(11, datetime(*date_ccr))

除了一些比较之外,在这两行之间没有对 date_ccr 做任何事情。

有什么想法吗?

【问题讨论】:

    标签: python excel datetime xlwt xlrd


    【解决方案1】:

    您可以将浮点数直接写入电子表格并设置单元格的数字格式。写入值时,使用XFStyle 对象的num_format_str 设置格式。

    https://secure.simplistix.co.uk/svn/xlwt/trunk/xlwt/doc/xlwt.html#xlwt.Worksheet.write-method

    以下示例写入日期 01-05-2010。 (也包括 06:00:10 的时间,但这被本例中选择的格式隐藏了。)

    import xlwt
    
    # d can also be a datetime object
    d = 40299.2501157407
    
    wb = xlwt.Workbook()
    sheet = wb.add_sheet('new')
    
    style = xlwt.XFStyle()
    style.num_format_str = 'DD-MM-YYYY'
    
    sheet.write(5, 5, d, style)
    wb.save('test_new.xls')
    

    xlwt源代码的examples文件夹中有数字格式的例子(num_formats.py)。在我的 Windows 机器上:C:\Python26\Lib\site-packages\xlwt\examples

    您可以了解 Excel 如何存储日期(本页第三部分):https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-18
      • 2014-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-16
      相关资源
      最近更新 更多