Python openpyxl - 读取Excel文件并为空白单元格设置null

时间:2015-05-06 23:47:26

标签: python excel openpyxl

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编码的数据

1 个答案:

答案 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']

相关问题