Чтение больших таблиц Excel (угадывание размера) - PullRequest
3 голосов
/ 26 сентября 2011

Я использую pywin32 для чтения и записи, чтобы преуспеть.Теперь единственный метод, который я знаю, это доступ к Range.Value, однако я обычно заранее не знаю размер полной таблицы Excel.Поэтому в данный момент я читаю построчно, пока не нахожу совершенно пустую строку.Это может быть довольно медленно.

Конечно, я попробую такие хитрости, как чтение блоков данных - тогда мне придется найти оптимальный размер блока.

Знаете ли вы другой метод (может бытьвнутренняя функция Excel) или другие подходы, которые быстрее?

Ответы [ 3 ]

3 голосов
/ 26 сентября 2011

Вы можете использовать xlrd , чтобы открыть книгу и прочитать размер определенного листа. Это довольно быстро.

Подсказки: book = xlrd.open_workbook("myfile.xls") затем вы получаете объект Sheet по sheet = book.sheet_by_index(sheetx) или sheet = book.sheet_by_name(sheet_name), и у вас есть свойство sheet.nrows с количеством строк в данном листе.

Вот документация API .

2 голосов
/ 26 сентября 2011

В VBA мы часто используем выражение End, например:

Worksheets("sheet1").Cells(Rows.Count, "A").End(xlUp).Row

Это может помочь вам найти последнюю использованную ячейку столбца (пока я не знаю, как расширить этот метод до pywin)

2 голосов
/ 26 сентября 2011

Как насчет получения всего диапазона с помощью свойства Worksheet.UsedRange ?

...