Как вы читаете значение клетки из файла OpenOffice Calc.
Вопрос
Я смог прочитать значение клеток Excel с XLRD, используя номера столбца и строки в качестве входных данных. Теперь мне нужно получить доступ к тому же значениям клетки в некоторых таблицах, которые были сохранены в формате .ods.
Так, например, как бы я прочитал с Python значение, хранящимся в ячейке E10 в файле .ods?
Решение
Взломать свой путь через XML не должен Будь слишком тяжелым ... Но есть осложнения. Только один пример: ООО в их мудрости решил не писать адрес ячейки явно. Там нет атрибута клеток, как address="E10"
или column="E"
; Вам нужно подсчитать строки и столбцы.
Пять последовательных пустых ячеек представлены
<table:table-cell table:number-columns-repeated="5" />
То number-colums-repeated
Атрибут по умолчанию для «1», а также относится к непустым ячейкам.
Он становится все хуже, когда у вас есть объединенные клетки; Вы получаете covered-table-cell
тег, который на 90% так же, как table-cell
тег и атрибуты number-columns-spanned
и number-rows-spanned
нужно быть изменено в столбец и подсчет строки.
А. table:table-row
тег может иметь number-rows-repeated
атрибут. Это может использоваться для повторения содержимого целого непустой строки, но чаще всего видно, когда есть более 1 последовательных пустых строк.
Итак, даже если вы будете удовлетворены подходом «Работы по моим данным», это не тривиально.
Вы можете посмотреть на Odfpy.. Отказ Обратите внимание на второе предложение: «« В отличие от других более удобных API, это, по сути, это по сути, является слоем абстракции чуть выше формата XML ».« Сценарий ODF-HTML, который (если он написан для ODS, а также Для ODT) можно взломано, чтобы получить то, что вы хотите.
Если вы предпочитаете «работать практически все данные и поддерживаются и имеет интерфейс, который вы знакомы с« подходом, вам может потребоваться подождать, пока функциональность не будет введена в xlrd
... Но это не произойдет в ближайшее время.
Другие советы
Из библиотек, которые я пытался EZODF. был тот, который работал.
from ezodf import opendoc, Sheet
doc = opendoc('test.ods')
for sheet in doc.sheets:
print sheet.name
cell = sheet['E10']
print cell.value
print cell.value_type
Pyexcel-Ods. разбился, odfpy. разбился и, кроме того, его документация либо отсутствует, либо ужасная.
Учитывая, что предположительно работающие библиотеки умерли на первом файле, который я проверил, я бы предпочел избежать писать свою собственную обработку как рано или поздно, он либо потерпел неудачу, либо то, что хуже молчало в некоторой ситуации на пути.
Редактировать: он становится хуже. Ezodf May. молча вернуть поддельные данные.