RSS
На Главную | Системное программирование в 1С | Таблица XML (XML Spreadsheet) для выгрузки в Excel

Таблица XML (XML Spreadsheet) для выгрузки в Excel Печать E-mail
( 1 Голос )

Как выгрузить данные в хорошо оформленный Excel отчет или макет, без вызова Еxcel.Application?

Попробуем решить эту задачу с помощью XML Spreadsheet, который появился еще в Office XP, но до сих пор находится в тени других способов взаимодействия 1С и Excel.

Получить XML Spreadsheet можно сохранив рабочую книгу Excel как "Таблица XML". Для упрощения задачи можно сохранить в Excel уже сформированный документ или отчет и внести в него изменения.

В частности вносим вместо выведенных данных - маркеры-переменные, которые будем  программно менять.

К примеру такие как на рисунке. _НаименованиеБанка_ или _НаименованиеПолучателя_

Подготовленный шаблон в Excel

После внесения изменений производим сохранение нашего файла в формате Таблица XML

 

 

Сохранение в XML

В результате мы получаем XML документ, c которым можно работать при помощи Excel, или как с обычным текстовым документом или как с XML структурой.

Образец можно посмотреть в прикрепленных файлах к статье. (Только для зарегистрированных пользователей).

Расмотрим второй способ, мне он кажется более удобным.

Последовательность действий такова: создаем форматированный шаблон в Excel - заголовки, границы, именованные диапазоны, параметры страницы, сквозные строки (столбцы), и.т.д. Кроме того шаблон может содержать несколько рабочих листов. Сохраняем шаблон как "Таблица XML". В 1С пишем обрабатывающую процедуру, которая считает шаблон, как обычный текстовый файл, вставит в него соответствующие даные и сохранит результат в рабочую книгу (*.xls).

В данном примере, для простоты мы будем формировать печатную форму счета на оплату. Сформируем печатную форму счета и сохраним его в формате XLS. Затем скопируем его содержимое через буфер обмена в новую xls-книгу. Это позволит очистить разметку Excel от разметки 1С. В новом файле раставим нужные нам мети, отредактируем объединения ячеек и ориентацию текста. После чего сохраним в формате Таблица XML.

Затем откроем, получившийся файл в текстовом редакторе (я рекомендую Notepad++ - мощный удобный и бесплатный). Вставим метки //НачалоСтроки, //КонецСтроки и //НоваяСтрока, ограничивающие строку данных, для того чтобы можно было выделить этот блок при разборе текста и найти место куда вставлять новую строку(если открыть этот файл в Excel и затем его сохранить, эти метки исчезнут).

Шаблон строки, куда будут выводиться данные будет выглядеть так:

Таблица XML в текстовом редакторе

Далее (в среде 1С) считываем xml-файл в строковую переменную, помните файл считывать нужно с обязательным указанием кодировки текста UTF-8, вырезаем из строки шаблон строки таблицы. Затем заполняем все параметры шапки и подвала печатной формы, после чего, в цикле, создаем набор строк с нашими данными, заменяя метки на соответствующие данные. Затем склеиваем полученный набор строк с остальными фрагментами файла,

После окончания формирования нужно заменить количество строк в переменной "ss:ExpandedRowCount" нашем случае заменяем ss:ExpandedRowCount="25" на ss:ExpandedRowCount="25+n-1", где n - количество строк в документе. И наконец сохраняем полученную строку в файл, c расширением xls. Описанный метод применим не только к Excel, но и к другим документам MS Office. Относительная простота форматов xml-докуметов Office позволяет создавать такие документы "на лету" прямо в коде 1С. Без использования серверов автоматизации OLE.

Пример обработки написан да конфигурации Рарус:Альфа-авто. Платформа 8.2.13.219

Шаблон XML создан на Excel 2003.

Идея Simpler

 

 

 

Добавить комментарий


Защитный код
Обновить

RU-CENTER. Регистрация доменов. Хостинг

Введите ваш Email:

Подписка предоставлена FeedBurner

 

 

 

 

 

 

 

 

Подписка на RSS
Закрыть вкладку