Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

12 Апрель 2021, 18:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Текстовые таблицы Writer  (Прочитано 2452 раз)
0 Пользователей и 1 Гость смотрят эту тему.
BigQWERTY
Участник
**
Offline Offline

Сообщений: 7


« Стартовое сообщение: 11 Сентябрь 2019, 11:10 »

добрый день, пишу скрипт правда на 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. Мне нужно автоматизировать заполнение отдельных столбцов этой таблицы. С учетом того, что в имена столбцов в которые будет производится запись, количество строк не известны за ранее, а размечается в документе.

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

Решено
« Последнее редактирование: 17 Сентябрь 2019, 10:46 от BigQWERTY » Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 3 068


iMac, LibreOffice и Apache OpenOffice


« Ответ #1: 11 Сентябрь 2019, 16:57 »

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

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

BigQWERTY
Участник
**
Offline Offline

Сообщений: 7


« Ответ #2: 11 Сентябрь 2019, 17:48 »

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

Например узнать в каких столбцах таблицы расположен символ "*" и писать в них
Перебрать ячейки и посмотреть, что в них.
если вы про
Код:
Table.getDateArray()
то такой вариант не подходит для сложных таблиц, так как он не видит содержимое всех ячеек строки
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 3 068


iMac, LibreOffice и Apache OpenOffice


« Ответ #3: 11 Сентябрь 2019, 18:32 »

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

BigQWERTY
Участник
**
Offline Offline

Сообщений: 7


« Ответ #4: 12 Сентябрь 2019, 09:46 »

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

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


* 9337a8ab9c23d9440dcf53510af174c9.jpg (70.8 Кб, 680x453 - просмотрено 16 раз.)
« Последнее редактирование: 12 Сентябрь 2019, 09:49 от BigQWERTY » Записан
Bigor
Мастер
*****
Offline Offline

Пол: Мужской
Сообщений: 1 088


« Ответ #5: 12 Сентябрь 2019, 11:06 »

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

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут
BigQWERTY
Участник
**
Offline Offline

Сообщений: 7


« Ответ #6: 12 Сентябрь 2019, 11:19 »

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

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

буду очень рад, если приложите несколько строк кода
« Последнее редактирование: 12 Сентябрь 2019, 11:28 от BigQWERTY » Записан
Bigor
Мастер
*****
Offline Offline

Пол: Мужской
Сообщений: 1 088


« Ответ #7: 12 Сентябрь 2019, 11:28 »

Строки дописываются в макросе и надо каким-то образом либо вставлять туда (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
Участник
**
Offline Offline

Сообщений: 7


« Ответ #8: 12 Сентябрь 2019, 13:12 »

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


* Таблица.jpg (24.92 Кб, 1190x149 - просмотрено 9 раз.)
« Последнее редактирование: 12 Сентябрь 2019, 13:15 от BigQWERTY » Записан
Bigor
Мастер
*****
Offline Offline

Пол: Мужской
Сообщений: 1 088


« Ответ #9: 12 Сентябрь 2019, 13:23 »

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

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут
BigQWERTY
Участник
**
Offline Offline

Сообщений: 7


« Ответ #10: 12 Сентябрь 2019, 13:25 »

как вытащить значение из ячейки ?
Записан
Bigor
Мастер
*****
Offline Offline

Пол: Мужской
Сообщений: 1 088


« Ответ #11: 12 Сентябрь 2019, 13:31 »

например так:
Код:
k=TablKind.getCellByPosition(1, i).getstring()
Записан

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!