我一直在使用 pyExcelerator 库,它运行良好。现在,我希望能够将 python 日期导出为 Excel 表中的日期格式。我不知道(我阅读了文档)该怎么做。有什么建议么 ?
问问题
862 次
2 回答
1
选项 1:
只需将字符串转换为您从解析中获得的日期时间类型。在这里,我假设您有固定的日期格式:
import csv
from datetime import datetime
date_object = datetime.strptime('Jun 1 2005 1:33PM', '%b %d %Y %I:%M%p')
rows = ['foo', 'bar', date_object]
with open('export.csv', 'wb') as csv_file:
writer = csv.writer(csv_file, delimiter=',', quoting=csv.QUOTE_MINIMAL)
writer.writerow(rows)
选项 2
使用 xlwt 模块。例子:
#!/usr/bin/env python
# -*- coding: windows-1251 -*-
# Copyright (C) 2005 Kiseliov Roman
from xlwt import *
from datetime import datetime
w = Workbook()
ws = w.add_sheet('Hey, Dude')
fmts = [
'M/D/YY',
'D-MMM-YY',
'D-MMM',
'MMM-YY',
'h:mm AM/PM',
'h:mm:ss AM/PM',
'h:mm',
'h:mm:ss',
'M/D/YY h:mm',
'mm:ss',
'[h]:mm:ss',
'mm:ss.0',
]
i = 0
for fmt in fmts:
ws.write(i, 0, fmt)
style = XFStyle()
style.num_format_str = fmt
ws.write(i, 4, datetime.now(), style)
i += 1
w.save('dates.xls')
更多示例:https ://github.com/python-excel/xlwt/tree/master/xlwt/examples
于 2013-11-17T13:04:27.790 回答
1
这是我做的一个功能。以为外面的人可能会找到一些用处。
import datetime
from pyexcelerate import Workbook
from pyexcelerate.Format import Format
def data_to_xlsx(data):
wb = Workbook()
for sheet_name in data:
headers = data[sheet_name]['headers']
rows = [row.itervalues() if isinstance(row, dict) else row for row in data[sheet_name]['objects']]
ws = wb.new_sheet(sheet_name, data=[headers]+rows)
ws.range((1, 1), (1, len(headers))).style.font.bold = True
datecols = []
if rows:
for x in xrange(len(rows[0])):
for row in rows:
value = row[x]
if value is not None:
if isinstance(value, datetime.datetime):
datecols.append((x, 'yyyy-mm-dd hh:mm:ss'))
elif isinstance(value, datetime.date):
datecols.append((x, 'yyyy-mm-dd'))
elif isinstance(value, datetime.time):
datecols.append((x, 'hh:mm:ss'))
break
for col, format in datecols:
ws.range((2, col+1), (len(rows)+1, col+1)).style.format = Format(format)
return wb
它需要一个嵌套的 dict,其中包括必要的内容,例如工作表名称、标题、行并返回一个 Workbook 对象。该函数基本上将数据插入工作表,然后将日期时间、日期或时间格式应用于整个列。
一个参数的例子是:
data = {
'List': {
'headers': ('First name', 'Last name'),
'objects': [
('Duane', 'Chow'),
('Chris', 'Mara'),
('Dan' , 'Wachsberger'),
('Ron' , 'Forenall'),
('Jack' , 'McGann'),
('Andrew' , 'Holt'),
('Anthony' , 'Perez'),
('Isaac' , 'Conley'),
('William' , 'Moniz'),
('Harris' , 'Boivin'),
('Raymond' , 'Martinez')
]
}
}
wb = data_to_xlsx(data)
于 2014-02-20T01:23:27.860 回答