16

I'm using xlwt to make a .xls spreadsheet, and I need to create date cells.

I've got writing out numbers, and setting the number format string to make them look like dates, but critically they aren't actually getting written as dates - if you do format cell in Excel, it's a "custom" Category rather than a "date" one, and this matters.

Can I make xlwt actually write "date" cells?

4

2 回答 2

23

如果您使用与 Excel 的内置格式字符串之一相对应的格式字符串,例如dd/mm/yyy. 例如:

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 文件变得痛苦的原因之一,因为您必须应用启发式方法来确定单元格是否包含日期。

于 2013-06-13T11:15:46.020 回答
3

来自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')

于 2013-06-12T15:55:22.570 回答