Python: перебор столбца Excel и получение значений с помощью win32com - PullRequest
0 голосов
/ 18 мая 2018

Я использую Python 3.5 и win32com, чтобы перебирать строки документа Excel (только из первого столбца) и получать из него все значения, лучшее из которых будет в простом списке.Я попробовал следующую реализацию, но есть несколько проблем с ней:

excel_app = win32com.client.Dispatch('Excel.Application')
workbook = excel_app.Workbooks.Open(myfile2)
worksheet = workbook.Sheets('Sheet1')
data = excel_app.Range("A1:A60")
print(data)

for i in data:
    if i is not None:
        print(i)

Проблемы в основном с: "data = excel_app.Range (" A1: A60 ")"

  1. Это занимает первые 60 строк, я хотел бы получить только столько строк, сколько имеется данных в файле Excel, в противном случае либо я не получаю достаточно данных, либо получаю слишком много, и в итоге получаюгруппа «Нет»

  2. Возвращает кортеж, поэтому я не могу изменить его, чтобы удалить значения «Нет», если получаю больше данных, чем в электронной таблице.

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Вы можете получить количество строк, используя:

worksheet.UsedRange.Rows.Count

, где UsedRange представляет все ячейки, которые содержали значение в любое время.

Как только выИмея данные в своем кортеже, вы можете скопировать их в список для обработки - например, new_list = data [:].

Если вы хотите скопировать в новый список и удалить одновременно значения None:

new_list = [ item for item in data if item is not None]
0 голосов
/ 18 мая 2018

Если бы вы не возражали против использования xlrd, я думаю, было бы намного проще.Это будет что-то вроде

import xlrd

xlf = xlrd.open_workbook('/wherever/file/may/roam/asdf.xlsx')
xls = xlf.sheet_by_name('Sheet1')
data = xls.col_values(0)
...