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

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

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

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

Сообщений: 3


« Стартовое сообщение: 31 Октябрь 2012, 15:48 »

Добрый день!
Не смог обнаружить подобную тему поиском, но ситуация самая распространенная.
Есть файл с таблицей, там указываются закупки. Каждая страница на свой день. Каждый файл - на свой месяц
Есть текстовый шаблон, куда хотелось бы переносить строчки из таблицы (одна колонка, просто список товаров) и распечатывать за текущий день.
Т.е. открыл таблицу, внес данные - жмакнул кнопку и все распечаталось в шаблоне.
Буду вам премного благодарен, если посоветуете решение такой задачи!
Спасибо!
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #1: 31 Октябрь 2012, 16:11 »

Добро пожаловать на форум!
Есть файл с таблицей, там указываются закупки. Каждая страница на свой день. Каждый файл - на свой месяц
Имеется в виду книга Calc? 12 книг в год? А какие столбцы там есть?
Есть текстовый шаблон, куда хотелось бы переносить строчки из таблицы (одна колонка, просто список товаров) и распечатывать за текущий день.
Т.е. открыл таблицу, внес данные - жмакнул кнопку и все распечаталось в шаблоне.
Почему текстовый? Какое-то особенное форматирование? Почему не выделить колонку со списком товаров и не напечатать выделенные ячейки прямо отсюда?
Записан

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

Сообщений: 3


« Ответ #2: 31 Октябрь 2012, 18:19 »

Имеется в виду книга Calc? 12 книг в год? А какие столбцы там есть?
Да, совершенно верно. Книга Calc. Есть папки с годами 2010, 2011, 2012. В каждой папке 12 файлов - январь, февраль, март... В каждом файле - лист с датой, когда был сделан заказ ( не обязательно каждый день.. Ну может раза 4 в месяц)
По задумке - столбцов два - что куплено и зачем (заметка для себя, а то память короткая Улыбка
Так изначально повелось, что заявка на закупку оформляется в шаблонном виде - с логотипом организации, с датой и подписью тебя и начальника.
Соответственно хотелось бы узнать прием, позволяющий вставить список товаров из одного столбца таблицы - в определенное поле текстового файла. Ну и совсем было бы хорошо иметь кнопку на листе, чтобы она открыала заполненный шаблонный документ  во Writer'е
А уж потом можно по аналогии заняться украшательствами типа заполневшего заявку, числом, отделом.. Главное - список Улыбка
Я находил решения для автоматической генерации писем, но это немножко не то. Там процедура однократная, тут же планируется положить шаблон текста в корень (можно абсолютный путь) и его использовать всегда.
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #3: 31 Октябрь 2012, 19:37 »

Ну, если бы я писал что-то в этом роде, то поступил бы так:
1. Получил текущее выделение в текущей книге. ( ThisComponent.getCurrentSelection() )
2. Проверил бы по всякому (выделен только один диапазон, количество колонок ровно одна, количество строк больше одной и т.п.)
3. На всякий случай переспросил бы пользователя
Код:
If MsgBox("Перед выполнением макроса убедитесь, что" + Chr(10) _
+ "выделены именно ячейки для печати." + Chr(10) _
+ "Сейчас это так?", 4+32, "Диапазон выбран правильно?") = 7 Then Exit Sub
4. Скопировал бы данные в массив ( ...getDataArray() )
5. Создал бы новый документ на основе шаблона с фиксированным путем и именем
6. Нашел бы в нем первую текстовую таблицу ( .getTextTables().getByIndex(0) ) из одной колонки и двух строк (первая - заголовок)
7. Получил бы всю коллекцию строк этой таблицы ( .getRows() )
8. Добавил бы нужное для считанных в массив данных количество строк (.insertByIndex(1, UBound(aData)-1) )
9. Вписал бы данные в ячейки таблицы ( .getCellRangeByPosition(0, 1, 0, UBound(aData)-1).setDataArray(aData) )
Как-то так, в общем...
Записан

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

Сообщений: 3


« Ответ #4: 31 Октябрь 2012, 19:39 »

Ну, если бы я писал что-то в этом роде, то поступил бы так:
Спасибо! Завтра вплотную займусь.
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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