使用 openpyxl 获取单元格值的显示字符串

Get displayed string for cell value with openpyxl

我正在使用 openpyxl 来处理 excel .xlsx 文件。文件中的某些列包含不同数字类型的单元格。我可以从 Cell 对象中获取 number_type 和值,但是 找不到简单的方法来获取 string。我花了几个小时查看 openpyxl 的文档和资源,但一无所获。

例如,我从 ipython 得到这个输出:

In [6]: ws['D4'].value
Out[6]: 0.02

In [7]: ws['D4'].data_type
Out[7]: 'n'

In [8]: ws['D4'].number_format
Out[8]: '0.0%'

In [9]: ws['D2'].number_format
Out[9]: u'yyyy"\u5e74"m"\u6708"d"\u65e5";@'

In [10]: ws['D2'].value
Out[10]: 42370L

如何获得像 '2%'u'2016\u5e741\u67081\u65e5' 这样的字符串?单元格可能是一些自定义单元格格式,所以我更喜欢通用的方式。

任何单元格的值都是 Python 等同于 Excel 类型。 openpyxl 是一个文件格式库,而不是像 Excel 这样的应用程序。因此,它只支持设置和读取数字格式,但不支持应用。也就是说,您可以根据规范轻松编写自己的函数来执行您想要的操作(创建 printf 类型格式)。