Начать работу

Описание функций для работы с XLSX

Принципы работы

  1. Формирование отчетов происходит на основе специально подготовленных шаблонов формата xlsx, в которых ячейки уже отформатированы нужным образом. При формировании отчета этот шаблон копируется один к одному со всем форматированием и настройками, а затем в эту копию вставляются данные.
  2. Вставка данных в xlsx-файл происходит не по адресу ячейки, а по имени. Это значит, что все ячейки, в которые необходимо заносить данные нужно сначала поименовать.
  3. При вставке данных использует промежуточный буфер. Это означает следующее. Часть файла шаблона копируется в буфер, затем в буфер в нужные ячейки пишутся данные, затем ячейки из этого буфера вставляются обратно в файл с данными и всем форматированием. Один и тот же буфер может использоваться для многократной вставки данных. Таким образом, можно писать в файл табличные данные.

Описание функций

Для работыпредусмотрено несколько функций.

xlsx_copyTemplate(input "stXlsx",input template) – функция копирует файл шаблона в некий промежуточный файл, доступ к которому производится через строку “stXlsx”. Template – содержит имя файла шаблона.

xlsx_cut( "stXlsx", region ) – копирует поименованную область файла-шаблона в буфер. Первый параметр “stXlsx” для указания на файл, с которым ведется работа, region – имя области. Таким образом, весь файл-шаблона должен быть разбит на несколько областей, таких как header, table, footer. Все эти области заносятся в буфер с помощью xlxs_ cut. Для каждой области создается свой собственный буфер, имя которого такое же как и имя области.

xlsx_setClipboardValue(input "stXlsx", input region, input cellname, input value) – изменяет данные в буфере, который предварительно создан при вызове xlsx_ cut. Region – имя области, cellname – имя ячейки(должна находится внутри области), value – значение, которое помещается в ячейку. Функция ожидает значение value типа character. Впрочем, если value не является строкой, а например, число, то функция также успешно отрабатывает, так как происходит неявное преобразование string(value) в момент передачи значения в функцию. Как это значение будет отображаться в Excel зависит от форматирование ячейки в файле шаблона.

xlsx_paste(input "stXlsx", input region, input address) – вставляет данные из буфера со всем форматированием обратно в файл. Region – имя области-буфера, address – адрес ячейки в файле вида “A1”, куда вставляется область из буфера (ее левый верхний угол). Если address = ?, то данные вставляются по месту «курсора». Это удобно. Если копировать и вставлять данные в буфер в правильной последовательности, то можно оставлять address = ?.

xlsx_save( input "stXlsx", input filename) – копирует временный файл, обращение к которому производилось через “stXlsx” в настоящий файл с именем filename.