Выгрузка / Загрузка в EXCEL данных через ЗаписьXML / ЧтениеXML



Выгрузка/Загрузка данных в xlsx, xlsm файл заданного шаблона, не требующая наличия программы Excel на сервере и на клиенте. Осуществляется путем открытия файла как архива и чтения/записи определенных листов как файлов XML. Проверена на платформе 8.3.10.2466.

Для загрузки файлов из Excel существуют довольно много вариантов, например, перечисленные тут //infostart.ru/public/341855/ а вот с выгрузкой все обстоит несколько хуже. Если открывать Excel через COM, требуется его наличие, да и зависшие процессы Excelя в случае ошибок не радуют, как и выскакивающие окна с предупреждениями. ADO — выгружает строго по своему шаблону, не позволяет вставить в файл определенные значения в определенные ячейки, не трогая соседние. ТабличныйДокумент.Записать это вообще один лист, полностью скопированный из таблицы 1С.

Вследствие этих ограничений и была разработана обработка, осуществляющая выгрузку и лишенная всех этих недостатков.

Принцип работы довольно прост, xlsx, xlsm файлы — по сути zip архивы, содержащие xml файлы. Обработка открывает такой архив, ищет файлы листов и перезаписывает эти файлы, добавляя туда свои значения.

Записываются/считываются только значения. Формулы, форматы ячеек и прочее не загружаются и не выгружаются.

В клиент/серверном варианте файл читается на клиенте перекидывается на сервер и возвращается с сервера, сохраняясь на клиенте.

5 Comments

  1. SmileDDD

    У вас не было необходимости создавать docx без мс офиса?

    Reply
  2. Wern03

    (2) нет не было.

    Reply
  3. MaxS

    Не помню где читал. В будущих версиях платформы вроде бы обещали средствами 1С читать и записывать несколько листов Excel

    Reply
  4. hulio

    (2) Если есть необходимость реализовать что-то подобное, рекомендую посмотреть, как это сделано в 1С:Документооборот.

    Шаблоны файлов в формате docx там обрабатываются именно по тому же принципу, что и у автора публикации — работа с xml.

    Reply
  5. sansys

    (4) Заявлено в 8.3.12

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *