Заполнение шаблона документа из таблицы

Автор Ingtar, 31 октября 2012, 16:48

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

Ingtar

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

JohnSUN

Добро пожаловать на форум!
Цитата: Ingtar от 31 октября 2012, 16:48Есть файл с таблицей, там указываются закупки. Каждая страница на свой день. Каждый файл - на свой месяц
Имеется в виду книга Calc? 12 книг в год? А какие столбцы там есть?
Цитата: Ingtar от 31 октября 2012, 16:48
Есть текстовый шаблон, куда хотелось бы переносить строчки из таблицы (одна колонка, просто список товаров) и распечатывать за текущий день.
Т.е. открыл таблицу, внес данные - жмакнул кнопку и все распечаталось в шаблоне.
Почему текстовый? Какое-то особенное форматирование? Почему не выделить колонку со списком товаров и не напечатать выделенные ячейки прямо отсюда?
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Ingtar

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

JohnSUN

Ну, если бы я писал что-то в этом роде, то поступил бы так:
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

Цитата: JohnSUN от 31 октября 2012, 19:37Ну, если бы я писал что-то в этом роде, то поступил бы так:
Спасибо! Завтра вплотную займусь.