| Таблица XML (XML Spreadsheet) для выгрузки в Excel |
|
|
|
Как выгрузить данные в хорошо оформленный Excel отчет или макет, без вызова Еxcel.Application? Попробуем решить эту задачу с помощью XML Spreadsheet, который появился еще в Office XP, но до сих пор находится в тени других способов взаимодействия 1С и Excel. Получить XML Spreadsheet можно сохранив рабочую книгу Excel как "Таблица XML". Для упрощения задачи можно сохранить в Excel уже сформированный документ или отчет и внести в него изменения. В частности вносим вместо выведенных данных - маркеры-переменные, которые будем программно менять. К примеру такие как на рисунке. _НаименованиеБанка_ или _НаименованиеПолучателя_ После внесения изменений производим сохранение нашего файла в формате Таблица XML
В результате мы получаем XML документ, c которым можно работать при помощи Excel, или как с обычным текстовым документом или как с XML структурой. Образец можно посмотреть в прикрепленных файлах к статье. (Только для зарегистрированных пользователей). Расмотрим второй способ, мне он кажется более удобным. Последовательность действий такова: создаем форматированный шаблон в Excel - заголовки, границы, именованные диапазоны, параметры страницы, сквозные строки (столбцы), и.т.д. Кроме того шаблон может содержать несколько рабочих листов. Сохраняем шаблон как "Таблица XML". В 1С пишем обрабатывающую процедуру, которая считает шаблон, как обычный текстовый файл, вставит в него соответствующие даные и сохранит результат в рабочую книгу (*.xls). В данном примере, для простоты мы будем формировать печатную форму счета на оплату. Сформируем печатную форму счета и сохраним его в формате XLS. Затем скопируем его содержимое через буфер обмена в новую xls-книгу. Это позволит очистить разметку Excel от разметки 1С. В новом файле раставим нужные нам мети, отредактируем объединения ячеек и ориентацию текста. После чего сохраним в формате Таблица XML. Затем откроем, получившийся файл в текстовом редакторе (я рекомендую Notepad++ - мощный удобный и бесплатный). Вставим метки //НачалоСтроки, //КонецСтроки и //НоваяСтрока, ограничивающие строку данных, для того чтобы можно было выделить этот блок при разборе текста и найти место куда вставлять новую строку(если открыть этот файл в Excel и затем его сохранить, эти метки исчезнут). Шаблон строки, куда будут выводиться данные будет выглядеть так: Далее (в среде 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
|