pyExcelerator или xlrd - Как найти / найти строку для данных нескольких столбцов данных? - PullRequest
1 голос
/ 22 апреля 2009

Python, связывающийся с EXCEL ... мне нужно найти способ, чтобы я мог найти / найти строку для данных данных столбца. Теперь я сканирую целые строки одну за другой ... Было бы полезно, если есть некоторые функции, такие как FIND / SEARCH / REPLACE .... Я не вижу этих функций в модулях pyExcelerator или xlrd. модули! это делает мой инструмент основанным на окнах!

НАЙТИ / ПОИСК Строки Excel через Python .... Любая идея, кто-нибудь?

Ответы [ 4 ]

5 голосов
/ 06 июня 2009

@ Джон Фухи: [Я поддерживаю xlwt и являюсь автором xlrd]

Часть для чтения электронных таблиц pyExcelerator настолько сильно устарела, что полностью исчезла из xlwt. Для чтения любых файлов XLS, созданных в Excel 2.0 до 11.0 (Excel 2003) или совместимом программном обеспечении, используя Python 2.1+, используйте xlrd

Эта «простая оптимизация» не нужна с xlrd:

import xlrd
book = xlrd.open_workbook("foo.xls")
sheet = book.sheet_by_number(0) # alternatively: sheet_by_name("Budget")
for row_index in xrange(sheet.nrows): 
    for col_index in xrange(sheet.ncols):
2 голосов
/ 23 апреля 2009

Вы не можете. Эти инструменты не предлагают возможности поиска. Вы должны перебирать данные в цикле и искать себя. К сожалению.

2 голосов
/ 22 апреля 2009

"Теперь я сканирую целые строки одну за другой"

Что с этим не так? «поиск» - в контексте электронных таблиц - действительно сложен. Искать значения? Искать формулы? Поиск по строкам, а затем по столбцам? Искать только в определенных столбцах? Искать только в определенных строках?

Электронная таблица - это не простой текст - шаблоны проектирования простой обработки текста не применяются.

Поиск по электронной таблице сложен, и вы делаете это правильно. Нет ничего лучше, потому что это сложно.

0 голосов
/ 23 апреля 2009

С pyExcelerator вы можете выполнить простую оптимизацию, сначала найдя максимальные индексы строк и столбцов (и сохранив их), так что вы выполняете итерацию по (row, i) for i in range(maxcol+1) вместо итерации по всем ключам словаря. Это может быть лучшим, что вы получите, если только вы не хотите пройти и построить значение сопоставления словаря для набора ключей.

Кстати, если вы используете pyExcelerator для написания электронных таблиц, имейте в виду, что в нем есть некоторые ошибки. Я сталкивался с тем, что писал целые числа от 2 30 до 2 32 (или около того). С первоначальным автором, по-видимому, трудно связаться в эти дни, поэтому xlwt - это форк, который исправляет (известные) ошибки. Для написания электронных таблиц это замена для pyExcelerator; Вы могли бы сделать import xlwt as pyExcelerator и ничего не менять. Хотя он не читает электронные таблицы.

...