Текстовые таблицы Writer

Автор BigQWERTY, 11 сентября 2019, 11:10

0 Пользователи и 1 гость просматривают эту тему.

BigQWERTY

добрый день, пишу скрипт правда на python для OpenOffice Writer для записи и генерации таблиц
для совета подойдет любой язык 


  Date = ["a", "b", "c"]
  numberLine = len(Date)
  allTable = document.getTextTables()
  Table = allTable.getByIndex(1)
  skipTitleTable = listRows.getCount
  Table.Rows.insertByIndex(skipTitleTable, numberLine)
     


Идея следующая скрипт ищет первую строку таблицы, которая содержит имена столбцов, и дописывает к ней numberLine строк, начиная с skipTitleTable. Мне нужно автоматизировать заполнение отдельных столбцов этой таблицы. С учетом того, что в имена столбцов в которые будет производится запись, количество строк не известны за ранее, а размечается в документе.

Например узнать в каких столбцах таблицы расположен символ "*" и писать в них

Решено

rami

Ваш обрывок кода может вставить строки в таблицу, если дополнить его отсутствующими кусками кода.

Цитата: BigQWERTY от 11 сентября 2019, 11:10Например узнать в каких столбцах таблицы расположен символ "*" и писать в них
Перебрать ячейки и посмотреть, что в них.

BigQWERTY

Цитата: BigQWERTY от 11 сентября 2019, 17:44
Цитата: rami от 11 сентября 2019, 16:57
Ваш обрывок кода может вставить строки в таблицу, если дополнить его отсутствующими кусками кода.

Цитата: BigQWERTY от 11 сентября 2019, 11:10Например узнать в каких столбцах таблицы расположен символ "*" и писать в них
Перебрать ячейки и посмотреть, что в них.
если вы про

Table.getDateArray()

то такой вариант не подходит для сложных таблиц, так как он не видит содержимое всех ячеек строки

rami

Есть другие методы, можно получить доступ к ячейке по имени или по индексу, в зависимости от поставленной задачи и структуры таблицы.

BigQWERTY

#4
Цитата: rami от 11 сентября 2019, 18:32
Есть другие методы, можно получить доступ к ячейке по имени или по индексу, в зависимости от поставленной задачи и структуры таблицы.

Может есть подход лучше для того чтобы шаблонизировать вот такие таблицы ?

bigor

Так у вас  проблемы только с "шапкой" ? больше объединенных ячеек на рисунке не видно.
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

BigQWERTY

#6
проблема в том, что таких таблиц в документе может быть N и заполнятся должны только отдельные (разные для каждой таблицы) столбцы.
Надо как-то разметить столбцы в которые будут записываться данные, и потом в них писать.
Строки дописываются в макросе и надо каким-то образом либо вставлять туда (Bookmark или field) + индекс, а потом писать в них данные
Либо в столбцы куда надо писать вставить "*" и искать ее.

Какое решение лучшее я не знаю, подскажите
Все примеры для доступа к ячейке, что я находил относятся к Calc и не подходят  

буду очень рад, если приложите несколько строк кода

bigor

Цитата: BigQWERTY от 12 сентября 2019, 11:19Строки дописываются в макросе и надо каким-то образом либо вставлять туда (Bookmark или field) + индекс, а потом писать в них данные
Чем больше вы описываете задачу, тем более непонятной она становится. Зачем в таблице поля и закладки, и как вы их собираетесь вставлять - руками? Т.к. если макросом можете вставить закладку, то так же можете (и даже проще) вставить данные.
Что значит не работает доступ к ячейкам текстовой таблицы?

TablKind=oDoc2.getTextTables.getByIndex(0)
if K_d < 6 then TablKind.getRows().removeByIndex(K_d, 6-K_d)

for i = 0 to K_d-1
TablKind.getCellByPosition(1, i).setstring(i)
next

За счет объединенных ячеек возможно придется мудрить с адресацией
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

BigQWERTY

#8
как автоматизировать заполнение таблицы, только выделенные желтым столбцы, с учетом того, что мы заранее не знаем их индексы,
индексы ячеек таблицы для записи каким-то образом должны определятся в макросе

bigor

Обойти в цикле шапку таблицы и найти в каких столбцах эти значения.
И лучше прикладывайте документы, чем их картинки
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

BigQWERTY

как вытащить значение из ячейки ?

bigor

например так:
k=TablKind.getCellByPosition(1, i).getstring()
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут