我可以禁用 openpyxl 自动将字符串解析为日期时间吗?

Posted

技术标签:

【中文标题】我可以禁用 openpyxl 自动将字符串解析为日期时间吗?【英文标题】:Can I disable openpyxl from automatically parsing strings to datetime? 【发布时间】:2017-11-04 08:14:31 【问题描述】:

我有简单的 excel 文件,其中包含各种 timstamp 格式的字符串。 openpyxl 中有一个内置功能可以自动将看起来像日期的内容转换为日期时间对象。

我的问题很简单,我如何才能将 raw 字符串作为用户插入到 excel 文件中,而无需 openpyxl 的干预。

我想使用一个函数自己尝试对datetime.strptime 的各种调用来进行我自己的格式测试。

加载excel是我这样完成的:

import openpyxl
ex = openpyxl.load_workbook('/path/to/file.xls')
worksheet = ex.active

如果需要遍历行,我正在使用worksheet.iter_rows 方法

【问题讨论】:

【参考方案1】:

您的假设不正确:openpyxl 不会转换字符串,除非您通过设置guess_types=True 来要求它。 Excel 通过设置数字格式并在内部将它们转换为纪元为 1899-12-30 的序列,将值视为日期时间对象。

【讨论】:

我已经尝试过guess_type=False,所以我猜你提到的转换字符串的excel。任何想法如何获取excell用户编写的原始字符串?如果我转换为 csv,那么 csv 中的日期也会自动转换为日期时间? @JavaSa 如果它返回 python datetime 对象,为什么你不能在自己的代码中单独处理 isinstance(cell.value, datetime.datetime) 和处理 if isinstance(cell.value, basestring)

以上是关于我可以禁用 openpyxl 自动将字符串解析为日期时间吗?的主要内容,如果未能解决你的问题,请参考以下文章

python接口自动化之openpyxl学习

python接口自动化测试 - openpyxl封装类

xlsxwriter 将 Excel 文档中第一列的字体样式更改为粗体。如何禁用此选项?

pythonexcel自动更新行号

python接口自动化测试 - openpyxl基本使用

在Python和openpyxl中使用小时和分钟-Excel格式与字符串和整数