首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pyExcelerator数据格式

pyExcelerator数据格式
EN

Stack Overflow用户
提问于 2013-11-17 12:21:12
回答 2查看 965关注 0票数 2

我使用pyExcelerator库已经有一段时间了,它运行得很好。现在,我希望能够将python日期导出为excel表中的日期格式。我不知道(我读过文档)该怎么做。有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-17 13:04:27

选项1

只需将字符串转换为解析中获得的日期时间类型即可。在这里,我假设您有固定的日期格式:

代码语言:javascript
复制
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模块。示例:

代码语言:javascript
复制
#!/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

票数 1
EN

Stack Overflow用户

发布于 2014-02-20 01:23:27

这是我做的一个功能。我想外面的人可能会找到一些有用的东西。

代码语言:javascript
复制
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对象。该函数基本上将数据插入工作表,然后将日期、日期或时间格式应用于整个列。

参数的一个例子是:

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20030602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档