3

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

好的...第二轮

现在我正在尝试将 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

有什么愚蠢的明显我想念的吗?

******* EDIT 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: Unknown or unsupported datetime type

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

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

2 回答 2

1

我终于让它与我最新的代码一起工作。该图表仍然无法使用插入的时间正确绘制图形,但至少它们正确插入。

由于我是从 SQL 中提取时间增量,因此我必须先更改它们的格式。来自 SQL 的原始时间增量无法正常工作:

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
于 2014-08-11T18:28:52.443 回答
0

XlsxWriter的 GitHub 主版本支持datetime.timedelta.

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

于 2014-08-10T20:01:03.087 回答