2016-12-13 30 views
-1

Я работаю над автоматизацией некоторых моих работ в excel. Большая часть того, что я пытаюсь сделать, это сравнить некоторые данные, чтобы определить, нужно ли их добавлять в какую-то систему или нет.python xlwings excel длина таблицы

Точка, в которой я сейчас борюсь, просматривает длину строки в excelsheet. Данные, которые поставляются через этот excelsheet, могут очень сильно развиваться, и я думаю, что это небрежное кодирование, если я позволю python просто захватить все и все в нем: P

Я немного оглянулся и нашел несколько советов по использованию Range() вертикальный, но, похоже, он больше не находится в xlwings.

Обходной я нашел читал compleet лист, обернув его, пока не нашел сотовый containint «Нет», то останавливать цикл, но это по-прежнему чувствует себя много «непитоновские-МОГ).

например. для данных я использую

A  B 
    1 data1 stuff9 
    2 data9 stuff4 
    3 data3 stuff3 
    4 data4 stuff2 
    5 

То, что я пытаюсь выяснить, сколько строк с данными имеет столбец а имеет. в этом примере я должен найти 4 (так элегантно, как это возможно)

Используя метод current_region и size, current_Region возвращает мне «1», размер дает я вернулся «1048576» (я думаю, что максимум excel, поэтому он просто продолжает подсчет;)), и то же самое касается конечного метода.

+0

Как насчет [current_region] (http://docs.xlwings.org/en/stable/api.html#xlwings.Range.current_region) метода? В сочетании с методом 'end'? –

+0

ah man, я думаю, что пропустил одну вещь во всей документации, которую я действительно искал (действительно сломал мне голову над этим как 4 часа>.). Собираюсь дать ему спину – Janko

+0

@ DavidZemens нет сигары по предлагаемым методам – Janko

ответ

0

Я только что установил xlwings и провел 5 минут, глядя на документы, и придумать два варианта для вас:

import xlwings as xw 
app = xw.apps[0] 
book = app.books[0] 
sheet = book.sheets[0] 
rng = sheet.range('A1') 

# This gives the last row in the TABLE'S current_region 
# This will take additional columns in to consideration 
rng.current_region.end('down').row 

# This gives the last row in column A 
rng.end('down').row 

Основываясь на вашем примере данных, оба метода дают результат 4, но вы должны обратите внимание на различия, например, если столбец B имеет больше данных в нем, то первый метод не подходит для идентификации «последней строки» в столбце A, он всегда будет возвращать последнюю строку всего объекта current_region.

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

  • Нет связанных вопросов^_^