xlrd 与 xlwt Python 库的 datetime 问题

2 投票
1 回答
3617 浏览
提问于 2025-04-16 00:26

我正在尝试把一些日期从一个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进行其他操作。

有什么想法吗?

1 个回答

9

你可以直接把浮点数写入电子表格,并设置单元格的数字格式。在写入数值时,使用一个叫 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 源代码的示例文件夹中,有关于数字格式的例子(num_formats.py)。在我的 Windows 电脑上路径是:C:\Python26\Lib\site-packages\xlwt\examples

你可以阅读关于 Excel 如何存储日期的信息(在这个页面的第三部分):https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html

撰写回答