Описание Report Sharp-Shooter

Генераторы отчетов – это специальный класс программ и программных компонентов, решающих задачу предоставления пользователям информации в удобном виде. Типичным представителем этого класса является Crystal Report, который много лет входит в состав средств разработки от фирм Microsoft и Borland. Другой представитель – FastReport - хорошо известен в среде разработчиков, использующих Delphi.

С появлением среды .NET Framework возникла необходимость в генераторе отчетов, написанном именно под .NET. Несмотря на то что библиотека .NET Framework огромна и увеличивается в размерах с каждой версией, она не в силах предоставить разработчикам абсолютно весь необходимый набор инструментов. Без сторонних библиотек и компонентов по-прежнему не обойтись. Так что стандартного генератора отчетов в .NET нет. Между тем .NET-разработчики, как правило, предпочитают использовать компоненты, разработанные специально для .NET. С такими компонентами удобнее работать, они проще в отладке, именно они способны наиболее эффективно использовать все преимущества, предоставляемые средой .NET. Да и потенциальная возможность запускать приложение на любой платформе, на которую портирована среда .NET, как-никак греет душу.

Генератор отчетов Report Sharp-Shooter, выпущенный фирмой Perpetuum Software, разработан специально для платформы .NET. Он полностью написан на языке C#, содержит только стопроцентно управляемый и безопасный код и отвечает всем самым взыскательным требованиям, предъявляемым к современным генераторам отчетов.
 

Диапазон возможностей

Fig.1

 

 

 

Report Sharp-Shooter умеет очень много. Сказать по правде, список его возможностей просто впечатляет.

Начнем с того, что генератор работает с большинством популярных интегрированных сред разработки .NET – Visual Studio.NET, Borland C# Builder, Delphi.NET, Sharp Develop, – поддерживает как WinForms, так и ASP.NET WebForms. В качестве источника данных для отчетов могут использоваться базы данных, файлы XML, а также любые объекты .NET, поддерживающие интерфейсы IEnumerable, IList, IListSource и тому подобные. Отчеты могут быть привязаны к одному источнику данных, к нескольким источникам или вообще быть отвязанными от них.

Создание и оформление отчетов производятся с помощью графического дизайнера отчета. Отчет может редактироваться как программистом на стадии разработки приложения, так и конечным пользователем уже в процессе работы приложения. Специальный мастер отчетов позволяет существенно ускорить создание типовых отчетов, а оригинальная концепция Master Reports позволяет значительно сократить время разработки набора отчетов, имеющих единое оформление. Возможность задавать набор стилей и использовать их при оформлении элементов отчета позволяет достичь еще большей экономии времени.

При оформлении отчетов могут использоваться элементы управления, предоставляемые генератором отчетов, элементы управления WinForms, а также собственные элементы управления, разработанные пользователем. Поддерживается встраивание диаграмм (charts) и виджетов (widgets), реализуемых с помощью дополнительных библиотек, разработанных Perpetuum Software. Интересной возможностью является наличие встроенных элементов управления для печати почтовых индексов, штрихкодов и вывода текста, отформатированного с помощью HTML- или RTF-разметки. Как известно, далеко не всегда отчет подготавливается исключительно для печати. Report Sharp-Shooter позволяет создавать многостраничные отчеты, устанавливать гиперссылки между различными элементами отчета и дает возможность конечному пользователю распечатывать только выбранные части отчета.

Report Sharp-Shooter реализует очень развитую модель привязки данных к элементам управления, аналогичную той, что используется в .NET. Она позволяет связать практически любые свойства любых элементов управления с полями данных, системными и локальными переменными, а также с результатами выражений, написанных на языке скриптов. В качестве языка скриптов могут использоваться любые .NET-языки, в частности C# и Visual Basic.NET. Report Sharp-Shooter предоставляет развитый набор средств для предобработки получаемых данных – данные могут быть отсортированы, отфильтрованы и предобработаны.

Report Sharp-Shooter позволяет строить отчеты любого уровня сложности. В его арсенал входят средства для создания иерархичных (Master-Detail) отчетов с неограниченным уровнем вложенности, отчетов с группировкой, матричных отчетов (сводных таблиц, pivot tables или cross tables), многоколончатых отчетов. Отчеты могут быть параметризованы. Наличие средств создания суботчетов позволяет легко использовать один и тот же фрагмент в нескольких отчетах, повышая степень повторного использования кода. Тип отчета SideBySide дает возможность легко размещать различные части отчета рядом, параллельно, со сдвигом по горизонтали. Сам генератор имеет открытую архитектуру – вы можете добавлять в него собственную функциональность путем написания плагинов и собственных элементов управления. Объектная модель документа, применяемая в генератора, хорошо структурирована и неплохо документирована. Готовые отчеты хранятся в виде открытых XML-файлов.

Report Sharp-Shooter содержит средства экспорта отчетов во все стандартные форматы данных (PDF, RTF, HTML, EMF, BMP, JPG, GIF, TIFF, PNG, Excel, Excel XML, CSV, Text и XPS), плюс открытая архитектура генератора позволяет написать собственный фильтр экспорта. Продукт локализован на несколько языков, в том числе и на русский.

Использование генератора в Visual Studio

Fig.1

Панель компонентов генератора в Visual Studio
При установке Report Sharp-Shooter добавляет в Microsoft Visual Studio собственную панель компонентов.

Весь набор компонентов можно разделить на три категории. В первую входит лишь один, главный компонент – ReportManager. Именно этот компонент позволяет создавать, редактировать и сохранять отчеты. Ко второй категории относятся компоненты, с помощью которых можно разрабатывать свои собственные компоненты для просмотра и редактирования отчетов, обладающие, например, нестандартным интерфейсом или измененной функциональностью. Сюда входят ReportViewer, ReportDesigner, DesignerToolBox, DesignerPropertyGrid и так далее. Третья, самая многочисленная, категория включает фильтры экспорта отчетов в самые разнообразные форматы.

Fig.1

Редактор компонента ReportManager

Порядок добавления отчета Report Sharp-Shooter в собственное приложение достаточно прост. Вы добавляете на форму компонент ReportManager. Щелкаете по нему мышью – открывается редактор, который позволяет создать требуемые отчеты и определить необходимые источники данных. Каждый отчет в ReportManager задается в виде экземпляра одного из компонентов ReportSlot, определяющих способ хранения шаблона отчета. По умолчанию Report Sharp-Shooter предоставляет возможность хранить шаблоны отчета в отдельном файле, в коде приложения или по заданному URL, однако при желании можно создать собственный ReportSlot, задающий иной способ хранения. После того как подходящий ReportSlot создан и все необходимые источники данных определены, можно переходить к созданию собственно отчета – щелчок мыши по выбранному экземпляру ReportSlot приводит к открытию дизайнера отчета.

Дизайнер отчета

Дизайнер отчета, несомненно, является важнейшим компонентом любого генератора отчетов. Чем удобнее дизайнер, чем больше возможностей он предоставляет, тем меньше программисту приходится тратить время на создание очередного отчета.

В Report Sharp-Shooter создание нового отчета начинается с вызова мастера создания отчетов. На первом шаге вы выбираете тип нового отчета: пустой отчет, стандартный отчет или отчет со сводной таблицей. На втором шаге вам предоставляется возможность задать параметры отчета – указать стили, которые должны быть использованы в отчете, язык программирования, который будет использоваться в скриптах, источник данных и отображаемые в отчете поля данных. Далее Report Sharp-Shooter создает отчет и открывает его в дизайнере отчетов. Следует отметить, что если вашей задачей является создание типичного отчета, отображающего простой список каких-либо данных, либо иерархию списков (Master-Detail), либо сводную таблицу, то мастер позволяет вам создать практически готовый отчет, исключив кучу рутинной работы в дизайнере.

Fig.1
Дизайнер отчетов

Интерфейс дизайнера отчетов Report Sharp-Shooter выполнен в духе Visual Studio. В центре располагается рабочая область отчета. Слева размещена панель инструментов, содержащая все доступные для размещения в отчете элементы управления. Справа от рабочей области расположены три панели: панель свойств, панель источников данных и дерево объектов.

Рабочая область позволяет осуществлять визуальное редактирование отчета – добавлять и удалять элементы отчета, двигать их, изменять размеры, задавать параметры шрифта и тому подобное. Редактирование большинства свойств элементов, в том числе размещенного в них текста, выполняется исключительно с помощью панели свойств.

Панель свойств отображает полный список свойств выбранного элемента отчета. Свойства разделены на два списка – поддерживающие привязку к данным и не поддерживающие.

Fig.1
Элементы управления, доступные на панели инструментов в дизайнере отчетов

Привязка к данным в Report Sharp-Shooter реализована очень интересно. Во-первых, у любого элемента отчета к данным может быть привязано множество различных свойств, не только value или text. Во-вторых, при привязке свойству сопоставляется не просто поле в источнике данных, а выражение на выбранном скриптовом языке. В наиболее распространенном случае, когда требуется сопоставить свойству поле в источнике данных, никакого программирования не требуется – поле можно выбрать через графический интерфейс, Report Sharp-Shooter сам сгенерирует правильное выражение. Однако самое интересное – это то, что выражения, используемые при привязке данных, – это не более чем короткая запись скрипта. Например, для объекта textBox1 связывание свойства Value с выражением dataBand1[“Column1″] эквивалентно добавлению в код скрипта этого объекта строчки textBox1.Value = dataBand1[“Column1″];. Таким образом, в простейших и самых распространенных случаях можно использовать удобный и быстрый способ привязки данных с помощью выражений. Если же требуется что-либо неординарное, привязку можно выполнить с помощью программирования скрипта – и здесь ваши возможности практически не ограничены.

Кстати, редактор скриптов выполнен на высоком уровне – поддерживает подсветку синтаксиса, функцию автоматического завершения кода и возможность быстрого ввода шаблонов кода (Code Snippets). Пожалуй единственной проблемой здесь является сложность отладки. Report Sharp-Shooter содержит средства проверки корректности синтаксиса скриптов, но контрольные точки в них не поставить – скрипты хранятся в отчетах в виде исходных текстов и компилируются непосредственно при создании отчета.

Панель источников данных также содержит две вкладки. На вкладке Data sources показаны список доступных в отчете источников данных и список содержащихся в них полей. На вкладке Bands отображается список секций отчета. Для тех секций, которым сопоставлены источники данных, показан список полей источника. С помощью панели инструментов удобно размещать в отчете текстовые элементы управления, привязанные к полям данных. Достаточно перетащить выбранное поле в отчет – дизайнер автоматически создаст привязанный к полю элемент управления требуемого размера.

На панели Document tree отображается дерево элементов, составляющих отчет. С его помощью удобно выбирать требуемый элемент отчета, а также просматривать структуру отчета в целом.

Принцип построения отчета в Report Sharp-Shooter схож с тем, что используется во многих других генераторах отчетов, например в FastReport. В отчет добавляются одна или несколько секций (band). В секцию помещаются те или иные элементы управления, задающие порядок форматирования данных, связанных с секцией. Размер большинства секций плавающий – зависит от объема содержащихся в них данных. Предусмотрены специальные секции для оформления верхних и нижних колонтитулов страницы, заголовка и завершающей части отчета. Порядок следования секций при печати определяется их порядком следования в отчете. Примечательно, что секции могут свободно вкладываться друг в друга – именно с помощью этого свойства в Report Sharp-Shooter реализована возможность построение иерархических отчетов типа Master-Detail. Очень элегантно реализована секция SideBySide – для того чтобы разместить рядом два ряда данных, необходимо в секцию SideBySide добавить две секции DataBand и разместить в них элементы управления так, чтобы они были смещены друг относительно друга по горизонтали. Интересной особенностью генератора является то, что наличие секций не является обязательным. Элементы управления могут размещаться напрямую в документе – именно за счет этого Report Sharp-Shooter позволяет формировать отчеты с точным позиционированием элементов управления, например визитные карточки.

Fig.1

Панель свойств, привязка данных

Fig.1

Скриншот демонстрационного приложения Reports Sharp-Shooter Samples Center

Следует отметить, что в состав Report Sharp-Shooter входит отличное приложение Reports Sharp-Shooter Samples Center, содержащее примеры нескольких десятков всевозможных отчетов. Исходные коды для всех примеров прилагаются, что существенно ускоряет и упрощает процесс изучения возможностей дизайнера отчета и генератора в целом.

Бочка меда, капля дегтя…

У программного продукта Report Sharp-Shooter, безусловно, много различных достоинств. Помимо мощной функциональности и отличного пользовательского интерфейса хотелось бы еще особо отметить следующее:

  • при распространении приложения дополнительных лицензионных отчислений платить не требуется;
  • при покупке полной версии генератора можно получить исходные коды;
  • имеется бесплатная версия генератора Report Sharp-Shooter Express. Основные ограничения бесплатной версии – имеющиеся в ней ограниченные по функциональности компоненты для построения сводных таблиц, графиков и диаграмм нельзя использовать в коммерческих приложениях, в ней отсутствую фильтры экспорта и дизайнер отчетов для конечных пользователей и, разумеется, нет исходных кодов.

Потенциальная проблема, с которой могут столкнуться некоторые пользователи Report Sharp-Shooter, – это размер файлов, которые необходимо распространять вместе с приложением, использующим генератор. Минимальный набор состоит из десятка сборок общим весом около 9 Мб. Причем, даже если вы не используете в отчетах виджеты и диаграммы, все равно придется включать в дистрибутив своего приложения соответствующие сборки. В случае небольших приложений такой увесистый набор дополнительных файлов может быть неприемлем.

Системные требования:

  • Microsoft .NET Framework 2.0.

На момент написания статьи текущая версия Report Sharp-Shooter – 3.8.0.3.

Автор статьи: Виктор Деревянко
Первоисточник: www.softkey.info

Comments are closed.