Описание различных способов получения отчетов MS Excel в ...

Preview:

DESCRIPTION

Описание различных способов получения отчетов MS Excel в "ПАРУС - Предприятие 8". Миндияров Илья Главный специалист Центра информационных технологий и консалтинга ПАРУС mindiyarov@parus.ru. Вопросы рассматриваемые в презентации. - PowerPoint PPT Presentation

Citation preview

Описание различных способов полученияотчетов MS Excel в

"ПАРУС - Предприятие 8"

Миндияров Илья

Главный специалист

Центра информационных технологий и консалтинга ПАРУС

mindiyarov@parus.ru

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Использование пользовательских приложений. Способы ускорения вывода данных в пользовательские приложения.

• Способы формирования отчета в формате XML на стороне сервера (отчет с типом "Двоичные данные").

• Способ ускорения формирования уже существующих отчетов MS Excel.

Комплексная система управления.

Использование пользовательских приложений.

Использования переменных vararray

Плюсы – минимальные переделки.

Минусы – незначительное ускорение работы

Комплексная система управления.

Использование пользовательских приложений.

Метод дает хорошие результаты при выводе большого кол-ва столбцов

Комплексная система управления.

Использование пользовательских приложений.

Написание программы на Visual Basic использую PL/SQL

Минусы – сложно писать, сложно сопровождать

Плюсы – очень быстро работает, не нужно полностью перерабатывать пользовательское приложение.

Пишем процедуру на PL/SQL следующим образом – большие статичные блоки кода на VB описываем функциями, которые возвращают clob

Комплексная система управления.

Использование пользовательских приложений.

Написание программы на Visual Basic использую PL/SQL

Затем такие функции будем добавлять в программу следующим образом.

Где С,С1,С2 - clob

Комплексная система управления.

Использование пользовательских приложений.

Написание программы на Visual Basic использую PL/SQL

Пишем программу так, чтобы все данные из запроса попали в текст программы VB

Комплексная система управления.

Использование пользовательских приложений.

Написание программы на Visual Basic использую PL/SQL

ВАЖНО! Размер одной процедуры на VBA не может превышать 64 Кб.

Я разбивал процедуры по 500 записей

Комплексная система управления.

Использование пользовательских приложений.

Написание программы на Visual Basic использую PL/SQL

Запишем все Clob’ы в один.

Преобразуем Clob в Blob

Комплексная система управления.

Использование пользовательских приложений.

Написание программы на Visual Basic использую PL/SQL

Преобразование Clob в Blob нужно если у вас кодировка БД отлична от CP-1251.

Комплексная система управления.

Использование пользовательских приложений.

Написание программы на Visual Basic использую PL/SQL

В пользовательском приложении пишем следующий код.

Комплексная система управления.

Использование пользовательских приложений.

Написание программы на Visual Basic использую PL/SQL

Чтобы такой код работал необходимо разрешение

“Доверять доступ к объектной модели проектов VBA”

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Первый способ – формирование книги MS Excel на основе SQL запроса с последующим форматированием на стороне клиента

Плюсы – быстро работает

Минусы – сложно описывать форматирование

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Первый способ – формирование книги MS Excel на основе SQL запроса с последующим форматированием на стороне клиента

Форматирование можно описать либо в тексте процедуры отчета, либо загрузить и обработать любой clob/blob из штатного раздела (шаблоны документов, пользовательские приложения)

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Первый способ – формирование книги MS Excel на основе SQL запроса с последующим форматированием на стороне клиента

Значение ‘NULL’ для поля RUN_CMD означает, что файл необходимо сохранить в каталоге %TEMP%, но НЕ вызывать никакую команду ОС

Данная возможность появилась в релизе 8.5.6.1 от 25.06.2013.

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Первый способ – формирование книги MS Excel на основе SQL запроса с последующим форматированием на стороне клиента

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Второй способ – на PL/SQL сгенерировать HTML, а затем HTML открыть в MS Excel.

Плюсы – просто и быстро

Минусы – нет формул, отформатированные числа являются строками, сложно сделать отчет на несколько листов.

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Второй способ – на PL/SQL сгенерировать HTML, а затем HTML открыть в MS Excel.

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Второй способ – на PL/SQL сгенерировать HTML, а затем HTML открыть в MS Excel.

Данная возможность появилась в релизе 8.5.6.1 от 25.06.2013.

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

Плюсы – быстрее невозможно

Минусы – очень трудно исправлять печатную форму отчета

1 шаг

Подготовить книгу Excel.

Важно сразу хорошо подготовить все стили – затем это будет сложно исправить

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

2 шаг

Сохранить книгу в формате XML.

Открыть книгу в XML-редакторе

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

3 шаг

Скопировать всю книгу в функцию, которая возвращает Clob

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

4 шаг

Удаляем атрибуты ss:ExpandedColumnCount ss:ExpandedRowCount в тэге Table

Заменяем значение 2013-01-01 на переменную

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

4 шаг

Результат

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

5 шаг

Вырезаем в текстовый редактор тэг Row с данными

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

6 шаг

Вырезаем в новую функцию весь xml, который идет после тэга Row, где описан заголовок таблицы

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

7 шаг

Проверим работу отчета

следующим образом

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

7 шаг

Результатом должна быть таблица без данных

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

7 шаг

Если что-то сделали не так, то появится подобное окно. Внимательно прочитайте указанный файл отчета, для исправления ошибки. Или выполните действия заново начиная с шага 2.

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

8 шаг

Проверим, что корректно формируется таблица

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

8 шаг

Результат

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

9 шаг

Подставляем поля курсора

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

Результат

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

Сложности: Если в тэге Row с данными (либо в строках после отчета) встречается атрибут ss:Index, то необходимо в пустых строках добавить пробелы в любую ячейку, чтобы избавиться от ss:Index.

<Table ss:ExpandedColumnCount=“1" ss:ExpandedRowCount="12" x:FullColumns="1"

x:FullRows="1">

<Row ss:Index="12">

<Cell><Data ss:Type="String">text</Data></Cell>

</Row>

</Table>

Комплексная система управления.

Ускорение существующих отчетов MS Excel

Силами ЦИТК Парус разработан пакет PL/SQL, который по данным, сгенерированным штатным пакетом PRSG_EXCEL, создает XML формата OfficeML на сервере.

Ограничения пакета:• Никогда не будет реализован PRSG_EXCEL.EXECUTE_MACROS.Пока ТОЛЬКО реализованы методы

PRSG_EXCEL.LINE_APPENDPRSG_EXCEL.LINE_CONTINUEPRSG_EXCEL.LINE_DELETEPRSG_EXCEL.CELL_VALUE_WRITE.

Пока не умеет работать с шаблонами в которых встречается тэг Row с атрибутом ss:Index.

Комплексная система управления.

Ускорение существующих отчетов MS Excel

Пример использования

Создать процедуру для двоичного отчета в которой вызвать процедуру существующего отчета MS Excel

Комплексная система управления.

Ускорение существующих отчетов MS Excel

Пример использования

Вызвать UDO_PKG_MSEXEL.PROCESS

Входной параметр – шаблон существующего отчета сохраненный в формате XML

Выходной параметр – готовый отчет MS Excel.

Комплексная система управления.

Ускорение существующих отчетов MS Excel

Пример использования

Результат

Комплексная система управления.

Ускорение существующих отчетов MS Excel

Сложность:

Когда сохраните шаблон в XML в текстовом редакторе необходимо проверить, что нет текста Row ss:Index. Если такой текст встретился добавьте в пустые строки пробелы в первую ячейку.

Комплексная система управления.

Ускорение существующих отчетов MS Excel

На существующих отчетахприрост производительности

увеличивался в 9-10 раз.

Комплексная система управления.

Ускорение существующих отчетов MS Excel

Вопрос•Нужно ли дорабатывать UDO_PKG_MSEXEL

до полного соответствия с методами PRSG_EXCEL?

Recommended