Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Помимо того, что вертикальный текст теперь стало возможным разворачивать как сверху вниз, так и снизу вверх, еще одной приятной мелочью в R2, дававшейся прежде большой кровью, стало пользовательское именование страниц при разбиении отчета на страницы, причем эти имена становятся именами эксельных листов при экспорте отчета в Excel. Ранее экспорт многостраничного отчета в Excel давал стандартные имена листов Sheet1, Sheet2 , ... (или Лист1, Лист2, ... в русской версии). Не всегда это соответствовало ожиданиям. Простейший пример - когда справочник клиентов или продуктов или и т.д. разбивается по алфавиту, на каждой странице находятся продукты, начинающиеся с одной и той же буквы (или двух букв или трех, неважно), и мы хотим включить эту букву в название Excelного листа. До недавних пор для этих целей мы бы изобразили небольшой скриптец из двух частей, первая часть которого дергает веб-сервис Reporting Services, давая ему команду срендерить интересующий отчет в Excel, а вторая часть заходит в получившийся Excelный файл при помощи старой доброй СОМовской (в смысле, Automation) модели и переименовывает имеющиеся в нем листы в соответствии с нужным правилом. Посмотрим, как это делается в R2.
В качестве датасета будет выступать список продуктов из любимой базы AdventureWorks:
SELECT ProductID, Name, Color, ListPrice, Size, Weight, Class
FROM Production.Product
WHERE (ListPrice > 0)
Датасет будет выводиться в виде таблицы
Рис.1
внутри которой нужно поставить Page Break перед каждой новой буквой, с которой будет начинаться Name. Вводим в табликсе новую группу по строкам:
Рис.2
в которой группировка будет происходить по первой букве поля Name:
Рис.3
и уберем колонку, которая автоматически создалась в табликсе под эту группу:
Рис.4
В св-вах группы говорим, что каждыйновый экземпляр группы, т.е. группа с буквы "А", группа с буквы "Б" и т.д., должен начинаться с новой страницы:
Рис.5
Теперь идем в свойства группы, которые не в диалоговом окне, а в панели свойств, и устанавливаем в св-ве PageName правило именования страниц. Пусть страницы называются так же, как и выражение, на основе которого производится разбиение на группы, т.е. по первой букве поля Name (см. Рис.3):
Рис.6
Публикуем отчет, запускаем и экспортим результаты в Excel:
Рис.7
Мы видим, что листы в получившемся Excelном файле называются в соответствии с заданным правилом:
Рис.8
Замечания.
Наиболее внимательные посчитали количество листов в Excel (12) и заметили, что оно не совпадает с тем, что мы видели при рендеринге в HTML (16). Это потому, что на рис.7 подмешиваются еще физические разрывы в зависимости от выставленной длины страницы. Зайдите в редакторе отчета в меню Report ->Report Properties и поставьте на закладке Page Setup размер страницы побольше.
Правило именования страниц поддерживается для экспорта в Excel, потому что в нем листы могут иметь осмысленные наименования. Допустим, в Wordе страницы не умеют называться, они могут только нумероваться, поэтому какое правило именования страниц ни стояло в Reporting Services, при экспорте в Word мы получим только номера страниц.
Алексей Шуленин