将时间插入xlsxwriter时为TypeError

时间:2014-08-08 18:19:18

标签: python-2.7 mysql-python xlsxwriter

我从MySQLdb导入两个数据点。第二点是cursor.fetchall()作为timedelta返回的时间。我没有运气试图将该信息插入xlsxwriter,总是得到“TypeError:未知或不支持的日期时间类型”错误。

好的......第2轮

现在我正在尝试将timedelta转换为datetime.datetime对象:

for x in tempList:
    timeString = str(x[1])
    ctTime.append(datetime.datetime.strptime(timeString,"%H:%M:%S))

现在在xlsxwriter中,我设置了格式:

ctChart.set_x_axis({'name': 'Time', 'name_font': {'size': 14, 'bold': True}, 'num_font': {'italic': True},'date_axis': True})

然后我创建了一个时间格式:

timeFormat = workbook.add_format({'num_format': 'hh:mm:ss'})

然后我尝试插入数据:

ctWorksheet.write_datetime('A1',ctTime,timeFormat)  

但无论我做什么,无论我如何格式化数据,我总会得到以下错误:

TypeError: Unknown or unsupported datetime type

有什么东西显然我很遗憾吗?

******* 编辑1 ******* jmcnamara - 在回复您的评论时,有更多细节:

我尝试使用datetime.timedelta(0,27453)等时间增量列表,使用以下代码打印时是7:37:33:

timeFormat = workbook.add_format({'num_format': 'hh:mm:ss'})
ctWorksheet.write_datetime('A1',ctTime,timeFormat)

我仍然收到错误:TypeError:未知或不支持的日期时间类型

即使遍历列表并尝试插入结果也会失败:

timeFormat = workbook.add_format({'num_format': 'hh:mm:ss'})
i = 0
for t in ctTime:
    ctWorksheet.write_datetime(i,0,t,timeFormat)
i += 1

2 个答案:

答案 0 :(得分:0)

XlsxWriter的GitHub主版本支持datetime.timedelta

尝试一下,让我知道它是否有效。它可能会在下周上传到PyPI。

答案 1 :(得分:0)

我终于使用了我最近的代码。使用插入的时间图表仍然没有正确绘图,但至少它们正确插入。

由于我从SQL中提取timedeltas,我不得不首先改变它们的格式。来自SQL的原始timedeltas无法正常工作:

for x in templist:
    timeString = datetime.datetime.strptime(str(x[1]),"%H:%M:%S")
    ctTime.append(timeString)

使用那些datetime.strptime格式化的时间,我能够成功插入到工作表中。

timeFormat = workbook.add_format({'num_format': 'hh:mm:ss'})
i = 0
for t in ctTime:
    ctWorksheet.write_datetime(i,0,t,timeFormat)
i += 1