ValueError:使用OpenPyXl时,行或列值必须至少为1

时间:2017-02-08 00:44:33

标签: python

我一直在使用Python for Finance,由Yves Hilpisch,特别是第12章作为学习如何集成Excel和Python的指南。我目前正在学习如何使用OpenPyxl。但是,我直接从本书中复制的代码无法正常工作,并且我不断收到ValueError。这是我正在使用的代码:

#use openpyxl and numpy
import numpy as np
import openpyxl as oxl

#create workbook object
wb = oxl.Workbook()
#create worksheet object
ws = wb.create_sheet(index=0, title='oxl_sheet')
#create data array
data = np.arange(1, 65).reshape((8, 8))
#write bulk data to worksheet
for c in range(data.shape[0]):
    for r in range(data.shape[1]):
        ws.cell(row=r, column=c).value = data[c, r]
        # creates a Cell object and assigns a value
#save and close workbook
wb.save('oxl_book.xlsx')

这是我得到的错误:

Traceback (most recent call last):
File "test1.py", line 14, in <module>
ws.cell(row=r, column=c).value = data[c, r]
File "C:\Anaconda2\lib\site-packages\openpyxl\worksheet\worksheet.py", line 307,in cell raise ValueError("Row or column values must be at least 1")
ValueError: Row or column values must be at least 1

我使用的是python 2.7,可能是问题吗? 我感谢任何和所有的帮助。

1 个答案:

答案 0 :(得分:0)

就像我在评论中提到的那样,你需要在1处为excel而不是0开始行和列(这是range会发生的事情)。

这对我有用:

for c in range(1, data.shape[0] + 1):
    for r in range(1, data.shape[1] + 1):
        ws.cell(row=r, column=c).value = data[c - 1, r - 1]

另外,我知道你可以使用excel和python win32com一次编写一个完整的数组(这比逐个单元快得多),所以我确信openpyxl也有一些功能。