Копировать ссылку на страницу Перейти в предыдущий раздел Перейти в следующий раздел

Большинство отчетов системы DIRECTUM формируется с помощью объектной модели приложений-редакторов Microsoft Office. При необходимости отчет можно доработать, чтобы он формировался не зависимо от установленного на компьютере пользователя приложения-редактора. Это позволит формировать отчеты с помощью приложений, отличных от Microsoft Office, например LibreOffice или Apache OpenOffice.

Для возможности доработки отчетов в системе DIRECTUM разработана библиотека генерации документов, которая представляет собой COM-библиотеку и предоставляет методы для работы с документами.

Чтобы процесс формирования отчета не зависел от Microsoft Office, необходимо в расчете отчета все обращения к объектной модели Microsoft Office заменить на работу с объектами, получаемыми с помощью библиотеки генерации документов. Для работы с библиотекой создайте СОМ-объект:

 

DocumentProcessingLib = CreateObject('NPOComputer.DocumentProcessing.GenerateDocument')

Полученный объект предоставляет методы для работы с документами:

GetAsposeWordsDocument – возвращает экземпляр объекта класса Aspose.Words.Document.

Синтаксис:

object GetAsposeWordsDocument(string fileName)

Параметры:

Filename – путь до файла с документом Word в форматах DOC, DOT, DOCM, DOTM, DOCX, DOTX, FlatOpc, FlatOpcMacroEnabled, FlatOpcTemplate, FlatOpcTemplateMacroEnabled, XML, ODT, OTT, OOXML, WordML, RTF, HTML, XHTML, MHTML, TXT.

Можно создать пустой документ без привязки к существующему на диске файлу. Для этого вызовите метод GetAsposeWordsDocument, передав в параметре Filename пустую строку;

GetAsposeWordsDocumentBuilder – возвращает экземпляр объекта класса Aspose.Words.DocumentBuilder.

Синтаксис:

object GetAsposeWordsDocument(Aspose.Words.Document document)

Параметры:

document – экземпляр объекта класса Aspose.Words.Document;
GetAsposeCellsWorksheet – возвращает экземпляр объекта класса Aspose.Cells.Worksheet.

Синтаксис:

object GetAsposeCellsWorksheet(string fileName, int worksheet)

Параметры:

fileName – путь до файла с документом Excel в форматах XLS, XLSX, XLSM, XLSB, XLTX, XLTM, CSV, SpreadsheetML, ODS;
worksheet – номер необходимого листа документа. Нумерация листов начинается с 0;
GetColorByName – возвращает экземпляр структуры System.Drawing.Color.

Синтаксис:

object GetColorByName(string colorName)

Параметры:

colorName – имя одного из поддерживаемых цветов.

Объекты классов Aspose.Words.Document и Aspose.Cells.Worksheet можно использовать для различных действий над документами, переданными в параметре filename. Следует учитывать ограничения:

Подробнее Некоторые методы и свойства не поддерживаются при работе через COM

Вместо них используйте альтернативные методы библиотеки:

GetAsposeCellsThemeColor – возвращает экземпляр объекта класса Aspose.Cells.ThemeColor.

Синтаксис:

object GetAsposeCellsThemeColor(int themeColorType, double tint)

Параметры:

themeColorType – число, соответствующее перечислимому типу Aspose.Cells.ThemeColorType;
tint – число типа double в диапазоне от -1.0 (на 100% темнее) до 1.0 (на 100% светлее), соответствующее оттенку цвета;
AddAsposeCellsHyperlink – позволяет добавить гиперссылку в документ Excel.

Синтаксис:

void AddAsposeCellsHyperlink(dynamic worksheet, string startCell, string endCell, string adress, string displayText, string screenTip)

Параметры:

worksheet – экземпляр объекта Aspose.Cells.Worksheet, в который нужно добавить гиперссылку;
startCell – адрес ячейки начала гиперссылки;
endCell – адрес ячейки конца гиперссылки;
adress – адрес гиперссылки;
displayText – отображаемый текст;
screenTip – текст всплывающей подсказки.

 

Подробнее При работе через COM не поддерживаются перегрузки методов и свойств

Для вызова перегрузок методов или свойств добавляются постфиксы типа «_<номер перегрузки>». Пример:

 

List.Item_2(ItemName);

 

Подробнее Некоторые COM-объекты передаются некорректно в качестве параметров

При передаче COM-объекта в качестве параметра для метода и свойства может потребоваться использование вставки на VBS. Пример:

 

// Дублировать последнюю строку таблицы Table

    SCRIPT_FUNC_NAME = 'AppendNewRow'

    SCRIPT_TEXT = '

      Function AppendNewRow()

          Dim LastRowClone

          Set LastRowClone = Table.LastRow.Clone(True)

          Table.AppendChild(LastRowClone)

      End Function'

    SCRIPT_VAR = 'Table'

    ScriptControl = CreateObject("MSScriptControl.ScriptControl")

    ScriptControl.Language = "VBScript"

    ScriptControl.Reset

    ScriptControl.AddObject(SCRIPT_VAR; Table)

    ScriptControl.AddCode(SCRIPT_TEXT)

    ScriptControl.Run(SCRIPT_FUNC_NAME)

 

Подробнее Пример

Заполнить указанный файл отчета значениями из списка.

 

// Создание объекта библиотеки генерации документов

    DocumentProcessingLib = 

      CreateObject('NPOComputer.DocumentProcessing.GenerateDocument')

    Document = DocumentProcessingLib.GetAsposeWordsDocument(Path)

    i = 0

    FormFields = Document.Range.FormFields

    while i < ListVar.Count

      VarName = ListVar.Names(i)

      VarValue = ListVar.Values(i)

// Поиск соответствующего поля в тексте документа

     Field = FormFields.Item_2(VarName)

     if not VarIsEmpty(Field)

       Field.Result = VarValue

     endif

    i = i + 1

   endwhile 

// Удалить из документа поля, сохранив текст

   Document.UnlinkFields()

   Doc.Save_2(Path; 30)

Отчеты Описание типового маршрута и Контроль сроков получения поручений уже переведены на работу без Microsoft Office. В расчете этих отчетов можно посмотреть подобную реализацию доработок.

© Компания DIRECTUM, 2018 Сообщество пользователей DIRECTUM
.navbar > a:hover { background: #FFD73B; }