我一直在使用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,可能是问题吗? 我感谢任何和所有的帮助。
答案 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也有一些功能。