如何在xlsxwriter中将列设置为日期格式

7
我正在进行一个项目,需要将数据写入xlsx电子表格,并需要对其中一列进行“日期”格式化。虽然程序已经运行,但该列的格式仍设置为“常规”。您可以尝试使用不同的代码方式来解决这个问题,并查看是否有人回答。
for row in cur.execute('''SELECT `Mapline`,`Plant`,`Date`,`Action` from AEReport'''):
    lengthOfHeadings = len(row)
    output = '%s-%s.xlsx' % ("AEReport",now.strftime("%m%d%Y-%H%M"))
    workbook = xlsxwriter.Workbook(output, {'strings_to_numbers':True})
    worksheet = workbook.add_worksheet()

    format=workbook.add_format({'font_size':'8','border':True})
    format2=workbook.add_format({'font_size':'8','border':True,'num_format':'mm/dd/yy hh:mm'})
    count = 0
    for name in range(0,lengthOfHeadings):
        if name==row[2]:
            name=int(name)
            worksheet.write(counter, count, row[name],format2)
    else:
        worksheet.write(counter, count, row[name],format)
    count += 1
counter += 1

Slihthinden
3个回答

9
为了使日期时间格式正常工作,您需要将日期值转换为Excel序列日期值
以下是一个示例,展示它的工作原理:
import pandas as pd
data = pd.DataFrame({'test_date':pd.date_range('1/1/2011', periods=12, freq='M') })
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')

data.test_date = data.test_date - pd.datetime(1899, 12, 31)

pd.core.format.header_style = None    
data.to_excel(writer, sheet_name='test', index=False)

workbook  = writer.book
worksheet = writer.sheets['test']

formatdict = {'num_format':'mm/dd/yyyy'}
fmt = workbook.add_format(formatdict)

worksheet.set_column('A:A', None, fmt)

writer.save()

这是输出的样子: 在此输入图片描述


我想使用它,但是当我尝试运行pandas时,我一直收到错误信息。 ImportError: Missing required dependencies ['numpy'] 我已经安装了pandas和包括numpy在内的所有依赖项,所以不确定出了什么问题。谢谢你的建议。 - Slihthinden
导入错误:缺少必需的依赖项['numpy']。我已经安装了pandas和包括numpy在内的所有依赖项,所以不确定出了什么问题。谢谢建议。 - Slihthinden
如果您遇到这个错误,可以输入 import numpy as np,它会纠正错误,更好的方法是展示出出错的代码片段,这样您可能会得到解决方案。 - Abbas
当我输入import numpy语句时,我会得到另一个错误 -“ImportError:DLL加载失败:%1不是有效的Win32应用程序”。 - Slihthinden
显然,上面的错误是由于我昨天更新了Python版本,虽然我在64位机器上运行,但一直在使用32位Python,并更新到了64位版本,因此使得所有32位模块都失效了。再试一次。 - Slihthinden
显示剩余2条评论

2
from datetime import datetime

date_format = workbook.add_format({'num_format':'yyyy-mm-dd hh:mm:ss'})

worksheet.write(0, 0, datetime.today(),date_format)

结果: Excel生成的图片


-1

日期 = workbook.add_format({'num_format': 'dd-mm-yyyy'})

worksheet.write(1, 1 , 02-12-199, 日期)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接