Страница 1 из 1

Viewpoint Docx Toolkit для создания MS Word отчетов

Добавлено: 11 апр 2016, 01:30
Kosist
Уважаемые форумчане!

По совету уважаемого dadreamer, хотелось бы представить небольшое описание тулкита, Viewpoint Docx Toolkit, для создания MS Word отчетов. Его "фишка" заключается в том, что он не требует установки пакета от MS Office, т.к. не использует ActiveX. А это - плюс в его использовании, чего нельзя сказать о стандартном MS Office Report Generation Toolkit от NI.

Установить тулкит можно прямо из VIPM'а без проблем. Тулкит платный, но вначале дается 30-дневный траял, которого за глаза хватит, чтобы вдоволь поиграться, и понять, покупать его, или нет.

К посту прикладываю код, где я пробывал базовые функции - добавление текста, таблицы, списка, оглавления, и колонтитулов.

По функциях, что бросилось в глаза.

1. Можно напрямую создавать списки.
2. В отличии от Report Generation Toolkit (RGT), не поддерживает вставку текста в закладки. Есть лишь фукнция замены текста. Но, в принципе, это не беда, т.к. замена текста, а не закладки, более удобна при работе с шаблоном.
3. Шаблоны, кстати, тоже поддерживаются, можно использовать подготовленный шаблон для генерации отчета - так же, как и в RGT.
4. Вставка таблицы - как "по-ячеечно", так и напрямую, с лицевой панели - можно подключить на вход функции референс на контрол таблицы.
5. Можно форматировать стиль не только текста, но и таблицы (честно говоря, не помню, если такая возможность в RGT).
6. Присуствует побольше "самостоятельных" функций по форматированию текста (в RGT все собрано в одной виайке).
7. Машины без офиса у меня нет под рукой, а морочиться с виртуалкой - лень, поэтому проверку того, работает ли тулкит без установленного офиса я не делал. Но, функции работают действительно на .NET, так что верим разработчикам на слово.

Но, также есть и недостатки, которые затрудняют - как по мне - использование тулкита.

1. Отсутсвие офлайн справки. Detailed Help ссылка направляет вас на сайт ViewPoint, которые, в свою очередь, отсылают на stackoverflow (на поиск по тегу LabVIEWViewpointDocxToolkit). Однако, я по этому тегу так инфы и не нашел.
2. Нет справки - нет и нормального обработчика ошибки. В случае ошибки, в большинстве случаев я получал сообщение с кодом 9999, и описанием This error code is undefined. Хотя ошибки были очевидные - например, пустой путь для файла-шаблона, и пути для сохраненного файла; открытый файл для сохранения, и т.д.
Или - что непонятно - не получилось вставить колонтитул. Там всего-то пара функций, но из-за непонятной ошибки, вставку колонтитула реализовать не удалось.
3. Для создания exe с использованием RGT нужно в проект и в exe добавлять библиотеку с классом для RGT. Нужно ли это делать с использованием тулкита от ViewPoint, так и не удалось, т.к. для создания приложения нужно зарегистрировать тулкит...

В целом, единственный существенный плюс тулкита - это то, что не нужно устанавливать пакет офиса. По базовому функционалу он не уступает RGT, но из-за отсуствия справки и нормального обработчика ошибок (сомневаюсь, что после регистрации он станет доступным), использование его может оказаться "болезненным".
Но, это мое субъективное мнение, не более.

Если кто-то работал с тулкитом, а я написал здесь что-то не так - прошу прощения, так как пост не претендует на детальный обзор; может я что-то и упустил...
DocX Snippet.png

Re: Viewpoint Docx Toolkit для создания MS Word отчетов

Добавлено: 11 апр 2016, 07:14
Blackman
Support
Report Bugs and request features via our support portal, http://jira.viewpointusa.com/servicedes ... r/portal/4.
Note, you will need to create a login to access the support portal.
How Do I?
Post all 'How Do I?' questions to http://stackoverflow.com using the tags [LabVIEWViewpointDocxToolkit].
We regularly monitor http://stackoverflow.com for new questions, but to speed up the process provide us
the link to the question in the support portal, http://jira.viewpointusa.com/servicedes ... r/portal/4.
Requirements
Viewpoint Docx Toolkit requires LabVIEW 2014+ and the Microsoft .NET framework 4.0 or newer.
Viewpoint Xlsx Toolkit requires LabVIEW 2014+ and the Microsoft .NET framework 4.0 or newer.
Installation requires JKI Package Manager 2014 or newer.

Re: Viewpoint Docx Toolkit для создания MS Word отчетов

Добавлено: 11 апр 2016, 08:11
Kosist
Blackman писал(а):Support
Report Bugs and request features via our support portal, http://jira.viewpointusa.com/servicedes ... r/portal/4.
Note, you will need to create a login to access the support portal.
How Do I?
Post all 'How Do I?' questions to http://stackoverflow.com using the tags [LabVIEWViewpointDocxToolkit].
We regularly monitor http://stackoverflow.com for new questions, but to speed up the process provide us
the link to the question in the support portal, http://jira.viewpointusa.com/servicedes ... r/portal/4.
Requirements
Viewpoint Docx Toolkit requires LabVIEW 2014+ and the Microsoft .NET framework 4.0 or newer.
Viewpoint Xlsx Toolkit requires LabVIEW 2014+ and the Microsoft .NET framework 4.0 or newer.
Installation requires JKI Package Manager 2014 or newer.
Но я об этом и писал. Вы пробовали искать по их тегу? А на сапорт-портал необходима регистрация. Но отсутствие офлайн справки - это не есть хорошо...

Re: Viewpoint Docx Toolkit для создания MS Word отчетов

Добавлено: 11 апр 2016, 09:24
Blackman
Kosist, Можете кинуть файл спецификации spec из пакета установки?

Re: Viewpoint Docx Toolkit для создания MS Word отчетов

Добавлено: 11 апр 2016, 13:48
Kosist
Blackman писал(а):Kosist, Можете кинуть файл спецификации spec из пакета установки?
Spec файл? А где его искать? Я посмотрел папку установки, ничего такого не нашел...

Re: Viewpoint Docx Toolkit для создания MS Word отчетов

Добавлено: 11 апр 2016, 20:02
dadreamer
Я детально в этом тулките не копался, чисто ради интереса поставил. Вот что скажу по нему.
Kosist писал(а):7. Машины без офиса у меня нет под рукой, а морочиться с виртуалкой - лень, поэтому проверку того, работает ли тулкит без установленного офиса я не делал. Но, функции работают действительно на .NET, так что верим разработчикам на слово.
Да, работает. Проверил на виртуалке с Win XP + :labview: 2014. Файл нормально создаётся, потом на семёрке в офисе открывается.
Kosist писал(а):1. Отсутсвие офлайн справки. Detailed Help ссылка направляет вас на сайт ViewPoint, которые, в свою очередь, отсылают на stackoverflow (на поиск по тегу LabVIEWViewpointDocxToolkit). Однако, я по этому тегу так инфы и не нашел.
И это действительно серьёзный недостаток. Справки нет никакой вообще (контекстную помощь можно не считать за таковую). На оф. сайте тоже ничего полезного не сказано. Видимо, упор сделан на то, что пользователи тулкита обязательно ранее работали с офисом и без проблем представляют, какие там есть встроенные "фичи".
Kosist писал(а):2. Нет справки - нет и нормального обработчика ошибки. В случае ошибки, в большинстве случаев я получал сообщение с кодом 9999, и описанием This error code is undefined. Хотя ошибки были очевидные - например, пустой путь для файла-шаблона, и пути для сохраненного файла; открытый файл для сохранения, и т.д.
Сымитировал ситуацию - получил исключение в кластере error out:
2016-04-11_21-09-09.jpg
Очевидно, разработчики не сильно "парились" и присвоили всем ошибкам один и тот же код - 9999. Так что разбирать ошибки получится только с помощью парсинга текстового сообщения. :D
Kosist писал(а):Или - что непонятно - не получилось вставить колонтитул. Там всего-то пара функций, но из-за непонятной ошибки, вставку колонтитула реализовать не удалось.
Это больше похоже на баг. Если попробовать вставить колонтитул в новый документ, то всё отрабатывает без ошибок. В вашем же случае выдаёт

Код: Выделить всё

Memory stream is not expandable.
при вызове Header Footer Add.vi
и далее, при закрытии (и сохранении) документа

Код: Выделить всё

System.Xml.XmlException: The '=' character, hexadecimal value 0x3D, cannot be included in a name. Line 340, position 7.
Не совсем понятно, что имелось в виду, т.к. ни в пути, ни в имени файла нет никаких "=", и вообще все файлы я поместил в корень C:\. В общем, можно сообщить о баге разработчику, если есть время и желание.
Kosist писал(а):3. Для создания exe с использованием RGT нужно в проект и в exe добавлять библиотеку с классом для RGT. Нужно ли это делать с использованием тулкита от ViewPoint, так и не удалось, т.к. для создания приложения нужно зарегистрировать тулкит...
Ага, без регистрации билдиться не хочет:
2016-04-11_21-40-20.jpg
Вроде и понятно, зачем так сделано, а в то же время хотелось бы (как потенциальному покупателю) оценить работу тулкита в EXE, вдруг там баги или не заявленное поведение... Но этот кусок функционала от юзера скрыли. Что там по факту будет - :dntknw:
Не знаю, как насчёт проекта, а :vi: должна компилироваться даже с дефолтными настройками. NET сборка как и обычная библиотека просто должна быть помещена рядом с экзешником (в data или ещё куда), чтобы программа работала.
Kosist писал(а):В целом, единственный существенный плюс тулкита - это то, что не нужно устанавливать пакет офиса. По базовому функционалу он не уступает RGT, но из-за отсуствия справки и нормального обработчика ошибок (сомневаюсь, что после регистрации он станет доступным), использование его может оказаться "болезненным".
Согласен. Добавлю ещё такой минус:
Requirements
Viewpoint Docx Toolkit requires LabVIEW 2014+ and the Microsoft .NET framework 4.0 or newer.
Уж не знаю, чего там можно было такого написать, что ранние :labview: не могли это поддерживать (ибо .NET уже в LV 7.0 появился). Да и сами инструменты, судя по описанию, должны разбирать-собирать файлы на бинарном уровне.

Кроме того, оказалось, что работать с Word-файлами без самого офиса жутко непривычно! Всё время хотелось поглядеть, что там "нахимичили" эти :vi: , приходилось перекидывать с гостевой ОС на хост. Да и на практике часто после создания отчёта хочется его просмотреть, кое что подкорректировать вручную и т.п. Так что даже самый главный плюс этого тулкита - работа с Word без установки MS Office - кажется не таким уж существенным, чтобы переходить с RGT на этот продукт.

Re: Viewpoint Docx Toolkit для создания MS Word отчетов

Добавлено: 12 апр 2016, 09:00
Blackman
Spec файл? А где его искать? Я посмотрел папку установки, ничего такого не нашел...

Re: Viewpoint Docx Toolkit для создания MS Word отчетов

Добавлено: 12 апр 2016, 10:04
Kosist
О, теперь нашел, спасибо - высылаю. А что в нем Вас интересует, если не секрет?

Re: Viewpoint Docx Toolkit для создания MS Word отчетов

Добавлено: 12 апр 2016, 13:50
Blackman
Текстовый файл для установки пакета. Куда и что копируется.
Есть три VI для отладки
File 21="vi.lib/Viewpoint Systems/Viewpoint Docx Toolkit/Software/Utilities/Debug/Create Debug Log File.vi"
File 22="vi.lib/Viewpoint Systems/Viewpoint Docx Toolkit/Software/Utilities/Debug/New Document with Debug.vi"
File 23="vi.lib/Viewpoint Systems/Viewpoint Docx Toolkit/Software/Utilities/Debug/Open Document From Template with Debug.vi"

Re: Viewpoint Docx Toolkit для создания MS Word отчетов

Добавлено: 12 апр 2016, 14:10
Kosist
Оно-то, конечно, хорошо; но зачем тогда нужен тулкит, который еще нужно дебажить через лог-файл? Две функции из этих присутсвуют в вкладке Utilities, в палитре функций; но как-то это странно... Для отладки приложения в целом вряд-ли нужен лог самого тулкита, так что польза (или удобство) использования данных функций для меня немного сомнительна...

Re: Viewpoint Docx Toolkit для создания MS Word отчетов

Добавлено: 12 апр 2016, 18:15
dadreamer
Blackman писал(а):Есть три VI для отладки
File 21="vi.lib/Viewpoint Systems/Viewpoint Docx Toolkit/Software/Utilities/Debug/Create Debug Log File.vi"
File 22="vi.lib/Viewpoint Systems/Viewpoint Docx Toolkit/Software/Utilities/Debug/New Document with Debug.vi"
File 23="vi.lib/Viewpoint Systems/Viewpoint Docx Toolkit/Software/Utilities/Debug/Open Document From Template with Debug.vi"
Так уже получше. Но всё равно непонятно, что стало причиной исключения при вставке колонтитула.

Ошибка 1:

Код: Выделить всё

Message: FootersMemory stream is not expandable.   at System.IO.MemoryStream.set_Capacity(Int32 value)
   at System.IO.MemoryStream.EnsureCapacity(Int32 value)
   at System.IO.MemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count)
   at System.Xml.XmlUtf8RawTextWriter.FlushBuffer()
   at System.Xml.XmlUtf8RawTextWriter.RawText(Char* pSrcBegin, Char* pSrcEnd)
   at System.Xml.XmlUtf8RawTextWriter.RawText(String s)
   at System.Xml.XmlUtf8RawTextWriter.WriteStartElement(String prefix, String localName, String ns)
   at System.Xml.XmlUtf8RawTextWriterIndent.WriteStartElement(String prefix, String localName, String ns)
   at System.Xml.XmlWellFormedWriter.WriteStartElement(String prefix, String localName, String ns)
   at System.Xml.Linq.ElementWriter.WriteStartElement(XElement e)
   at System.Xml.Linq.ElementWriter.WriteElement(XElement e)
   at System.Xml.Linq.XElement.WriteTo(XmlWriter writer)
   at System.Xml.Linq.XContainer.WriteContentTo(XmlWriter writer)
   at System.Xml.Linq.XDocument.WriteTo(XmlWriter writer)
   at System.Xml.Linq.XDocument.Save(Stream stream, SaveOptions options)
   at Novacode.DocX.#aL(Boolean #V)
   at ViewpointDocxToolkit.Document.FootersAdd(Boolean differentFirstPage, Boolean differentOddEvenPages)
Ошибка 2:

Код: Выделить всё

Message: CloseThe '=' character, hexadecimal value 0x3D, cannot be included in a name. Line 340, position 7.   at System.Xml.XmlTextReaderImpl.Throw(Exception e)
   at System.Xml.XmlTextReaderImpl.Throw(String res, String[] args)
   at System.Xml.XmlTextReaderImpl.ParseElement()
   at System.Xml.XmlTextReaderImpl.ParseElementContent()
   at System.Xml.XmlTextReaderImpl.Read()
   at System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r)
   at System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r, LoadOptions o)
   at System.Xml.Linq.XDocument.Load(XmlReader reader, LoadOptions options)
   at System.Xml.Linq.XDocument.Load(Stream stream, LoadOptions options)
   at Novacode.DocX.Save()
   at ViewpointDocxToolkit.Document.Close()
В лог заносится только цепочка вызовов функций без указания параметров и возвращаемого значения. Так что остаётся гадать, почему вдруг Memory Stream не хочет расширяться и почему возникает сбой при парсинге xml-контента.

А ещё, они с этим логом серьёзно "спалились". :crazy: Хорошо видно, что все :vi: представляют из себя обёртки над .NET библиотекой Novacode DocX:
https://docx.codeplex.com/
https://github.com/WordDocX/DocX
К слову говоря, библиотека бесплатная, содержит весь заявленный функционал, в т.ч. документацию и не требует установки офиса.
What is DocX?

DocX is a .NET library that allows developers to manipulate Word 2007/2010/2013 files, in an easy and intuitive manor. DocX is fast, lightweight and best of all it does not require Microsoft Word or Office to be installed.
Так что выводы сами делайте.

Re: Viewpoint Docx Toolkit для создания MS Word отчетов

Добавлено: 13 апр 2016, 00:54
Kosist
dadreamer писал(а):А ещё, они с этим логом серьёзно "спалились". :crazy: Хорошо видно, что все :vi: представляют из себя обёртки над .NET библиотекой Novacode DocX
Ну Вы даете... Докопались до самой сердцевины, круто! :super: Нужно будет для интереса посмотреть на сие творение, интереса ради...

Re: Viewpoint Docx Toolkit для создания MS Word отчетов

Добавлено: 15 апр 2016, 12:22
dadreamer
Kosist, тем временем я релизовал ваш пример на библиотеке Novacode DocX. Получилась вот такая портянка:
Snippet.png
Как можно видеть, преимущество платного тулкита в том, что он упрощает многие рутинные действия, такие например как перебор всех ячеек в таблице при записи в неё текста и т.д. Также тулкит содержит уже готовые списки, тайпдефы, константы, что тоже несколько упрощает жизнь. Ну, и плюсом идут красивые иконки для :vi:, описания входов-выходов, более-менее "говорящие" имена самих :vi: . То, что справки нормальной нет, это конечно минус. Но, как я понял, для Novacode справка тоже не ахти: доступна только альфа-версия, и в ней нет описаний работы методов и свойств.

С другой стороны, библиотека Novacode менее глючная. Те же колонтитулы нормально добавляются в документ. Хотя ошибки не документированы, по их текстовому описанию можно понять, что явилось причиной ошибки. Единственное, пришлось со стилями повозиться - совсем неочевидным оказалось, что стиль уже должен быть в документе, когда мы применяем его к какому-либо тексту (а иначе текст получается самый обычный).

Также нет ограничения на версию :labview: не ниже 2014. Проверял в LV 2013, всё работает нормально. Думаю, и на более старых тоже будет работать.