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

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

23 Ноябрь 2019, 05:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice  без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Макрос вставки таблицы или добавления строк в таблицу  (Прочитано 6151 раз)
0 Пользователей и 1 Гость смотрят эту тему.
striganov.com
Новичок
*
Offline Offline

Сообщений: 2


« Стартовое сообщение: 15 Декабрь 2011, 11:18 »

Кто подскажет как макросом добавить в документ Writer таблицу
или если таблица там уже есть, то скопировать ее строку (как шаблон строки),
чтобы добавить в эту таблицу еще несколько таких же строк.

Я пытался вставлять HTML таблицу:
Код:
  Cursor.gotoStart (False)
  Dim SearchEnd As Object
  SearchEnd = Doc.createSearchDescriptor
  SearchEnd.SearchString = "InsertTable" ' находим метку - куда вставить таблицу
  FoundEnd = Doc.findFirst(SearchEnd)
  If Not IsNull(FoundEnd) Then
     FoundEnd.setString ("<table><tr><td>aaa</td><td>bbb</td></tr></table>")
  End If
Этот код мне просто отображает исходный код таблицы в документе, т.е. просто как текст.

У кого-то есть рабочий код вставки таблицы ?
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #1: 15 Декабрь 2011, 12:08 »

Добро пожаловать в нашу компанию!
Таких макросов много.
Главная идея: все таблицы в документе Writer - это элементы отдельной коллекции TextTables. Получить её для текущего документа можно через простой ThisComponent.getTextTables()
А с самой коллекцией работать можно стандартными методами: getByIndex или getByName (если hasByName()=Истина) получаем нужную таблицу. А в таблице уже просто. Там и Columns, и Rows, у которых есть insertByIndex, и прямой доступ к конкретной ячейке...
Это что касалось добавления строк к существующими таблицам.

А насчет вставки новой таблицы в документ - это у Питоньяка хорошо расписано. Это в "Листинг 7.2.1.1: Создать текстовую таблицу взамен другой." (русская версия, старая) или "Listing 7.3: Create a text table at the location of another." (в последней оригинальной)

Там какой принцип: создается "заготовка" таблицы (ThisComponent.createInstance("com.sun.star.text.TextTable")), инициализируется (ну, количество строк-столбцов задается, и еще какие-то параметры) и одним пинком втыкается в нужное место документа, в текст документа (ThisComponent.getText().insertTextContent(oCurs, oTable, False)).
В общем, или посмотри Питоньяка, или подробнее опиши, что именно хочешь сделать.
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
striganov.com
Новичок
*
Offline Offline

Сообщений: 2


« Ответ #2: 15 Декабрь 2011, 13:51 »

Спасибо, помогло Улыбка
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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