from openpyxl import load_workbook
import json
wb = load_workbook(filename='Deployment Plan_2015.xlsx',read_only=True)
ws = wb['Deployment Plan']
x = 4
data = []
for row in ws.rows:
for cell in row:
if not cell.value:
print('null')
x = x+1
else:
print(ws['A'+str(x)].value)
data.append(ws['A'+str(x)].value)
x = x+1
print(json.JSONEncoder(data).encode(data))
它只读取第一个单元格(项目1之后还有4个项目)然后将所有内容打印为null:
Project 1
null
null
它继续以一些结尾的空值结束:
Traceback (most recent call last):
File "C:\Users\Maynor\Documents\Python\projects\DPprojectlister.py", line 15, in <module>
print(ws['A'+str(x)].value)
File "C:\Python34\lib\site-packages\openpyxl-2.2.2-py3.4.egg\openpyxl\worksheet\worksheet.py", line 400, in __getitem__
return self._get_cell(key)
File "C:\Python34\lib\site-packages\openpyxl-2.2.2-py3.4.egg\openpyxl\worksheet\iter_worksheet.py", line 168, in _get_cell
cell = tuple(self.get_squared_range(col, row, col, row))[0]
IndexError: tuple index out of range
假设在到达列末尾之后打印以JSON编码的数据
答案 0 :(得分:0)
我不确定您要尝试做什么,但您应该考虑使用工作表的get_squared_range()
方法来获取一系列单元格,例如A4:D10以便使用
FWIW作为回溯显示错误来自在创建单元格之前查找单元格的值。如果要以编程方式查找单元格,请使用ws.cell()
。
从A列获取所有单元格:
ws.get_squared_range(min_col=1, min_row=1, max_col=1, max_row=ws.max_row)
获得一些:ws['A1':'A10']