我一直在研究Hilpisch的“用于财务的Python”,并且在我开始编写Excel的章节之前没有遇到太多麻烦。我正在运行Python 3.5并使用OpenPyxl模块
import openpyxl as oxl
import numpy as np
wb = oxl.Workbook()
ws = wb.create_sheet(index = 0, title = 'oxl_sheet')
data = np.arange(1, 65).reshape((8, 8))
for c in range(1, data.shape[0]):
for r in range(1, data.shape[1]):
ws.cell(row=r, column=c, value=data[c, r])
返回:ValueError: Cannot convert 10 to Excel
使用numpy是一个问题吗?例如,以下代码返回类似的错误。
ws.cell(row=1, column=1, value=data[0,0])
但是用整数或浮点数替换data[0, 0]
不会引起任何问题。
似乎应该有一个简单的解决方法。
答案 0 :(得分:2)
openpyxl仅在"已知"它知道如何转换为Excel数据类型的类型(int,string等)。遗憾的是data[0, 0]
不是已知的类型:
➜ python
Python 2.7.10 (default, Oct 14 2015, 16:09:02)
[GCC 5.2.1 20151010] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> data = np.arange(1, 65).reshape((8, 8))
>>> type(data[0, 1])
<type 'numpy.int64'>
您必须将numpy.int64
转换为int
类型:
>>> for c in range(1, data.shape[0]):
... for r in range(1, data.shape[1]):
... ws.cell(row = r, column = c).value = data[c, r].astype(int)
答案 1 :(得分:0)
openpyxl 2.4中添加了对numpy类型的支持,您可以使用pip install -U --pre openpyxl
安装。