【发布时间】:2016-08-18 22:12:51
【问题描述】:
我正在使用 pywin32 读取/写入 Excel 文件。我在 Excel 中有一些日期,以 yyyy-mm-dd hh:mm:ss 格式存储。我想将它们作为 datetime.datetime 对象导入 Python。这是我开始的代码行:
prior_datetime = datetime.strptime(excel_ws.Cells(2, 4).Value, '%Y-%m-%d %H:%M:%S')
那没用。我得到了错误:
strptime() argument 1 must be str, not pywintypes.datetime
我尝试将其转换为字符串,如下所示:
prior_datetime = datetime.strptime(str(excel_ws.Cells(2, 4).Value), '%Y-%m-%d %H:%M:%S')
那也没用。我得到了错误:
ValueError: unconverted data remains: +00:00
然后我尝试了一些不同的东西:
prior_datetime = datetime.fromtimestamp(int(excel_ws.Cells(2, 4).Value))
仍然没有运气。错误:
TypeError: a float is required.
投射到浮点数没有帮助。也不是整数。 (嘿,此时我已经绝望了。)
我可能找错了地方,但我很难找到任何关于 pywin32 或 pywintypes 或 pywintypes.datetime 的好的文档。
有什么帮助吗?
【问题讨论】:
-
你能告诉我们这个字符串是什么样子的吗?
str(excel_ws.Cells(2, 4).Value) -
你考虑过使用
openpyxl吗?它不需要安装或自动化的 Excel 版本,并为您处理将带有日期的单元格转换为本机 python 日期时间... -
当然。我刚刚提交了一份打印声明,这就是它的样子:2016-04-01 17:29:25+00:00 现在我觉得不早点这样做很愚蠢。如果它总是在最后添加一个“+00:00”,显然我可以使用一个简单的拼接来得到我需要的东西。但是,我仍然想知道是否有更好的方法来处理这个问题。
-
我没有,乔恩。不需要安装 Excel 的好处对我来说并没有多大用处,因为我已经安装了 Excel,每天都在使用它,等等。但是,如果 PyWin32 继续因缺乏文档而激怒我,我可能很快就会检查出来。 (在此之前我使用的是 xlrd 和 xlwt,但 xlwt 无法处理 .xlsx,我想:当我可以使用 PyWin32 时,为什么还要使用 xlrd 和 PyWin32?所以这就是我现在所处的位置。)
-
没有 windows 框,但这是我能找到的最接近的东西。我知道它使用
pywintypes.Time而不是.datetime但值得一试。 timgolden.me.uk/python/win32_how_do_i/…