Как вы читаете значение клетки из файла OpenOffice Calc.

StackOverflow https://stackoverflow.com/questions/2740763

  •  02-10-2019
  •  | 
  •  

Вопрос

Я смог прочитать значение клеток 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. молча вернуть поддельные данные.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top