2016-04-08 899 views
2

我正在使用openpyxl来处理excel .xlsx文件。文件中的某些列包含不同数字类型的单元格。我可以从Cell对象中获取number_type和value,但是找不到一个简单的方法来获得字符串。我花了几个小时阅读openpyxl的文档和来源,但什么都没发现。使用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'一个字符串?单元格可能是一些自定义的单元格格式,所以我更喜欢一般的方式。

回答

2

任何单元格的值都是Excel类型的Python等效值。 openpyxl是文件格式的库,而不是像Excel这样的应用程序。因此,它只支持设置和读取数字格式的能力,但不适用它们。也就是说,你可以很容易地编写你自己的函数来根据规范做你想做的事(创建一个printf类型的格式)。

+0

我看到我必须自己格式化数据。我在MSDN上发现了一些规格,例如[this](https://msdn.microsoft.com/zh-cn/library/dd922181(v = office.12).aspx)。但他们主要是关于如何从文件中检索数据,而我仍然不确定如何格式化数据。我错过了什么吗?或者有关格式化单元格数据的细节超出了这些规格的范围? –

+0

我还没有看过使用任何细节的格式。我们只使用数字格式来检查是否是日期或时间。您最好的选择是查看规范§18.8.30的相关部分。这应该允许你在Python中创建适合的东西。 –

相关问题