2015-05-06 8 views
-1
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)) 

Он читает только первую первую ячейку (есть еще 4 проекта после проекта 1), а затем печатает все как нуль:Python openpyxl - прочитать файл Excel и установить нуль для пустых ячеек

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

Ну, вы начинаете на A4, то для каждой строки для каждой ячейки в строке, вы увеличиваете что 4. Итак, если лист 10x10, вы, в конце концов, попросите A104. Который не существует, потому что лист 10x10, а не 104xsomething. Как вы это делали? – abarnert

+0

показать немного организации листа: A4 говорит Проект 1. Значения, которые вы хотите в той же строке, растягиваясь, и если да, то как далеко? – beroe

+0

Я только хочу напечатать значения из столбца А, но в других столбцах есть значения. Мне только нужны значения из столбца A – MmmChips

ответ

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

+0

Я пытаюсь получить значения только из столбца A. Спасибо за информацию – MmmChips

Смежные вопросы