Python 3.5使用openpyxl编写numpy

时间:2016-04-15 09:17:17

标签: python excel openpyxl

我一直在研究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]不会引起任何问题。

似乎应该有一个简单的解决方法。

2 个答案:

答案 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安装。