Пользовательское именование листов при экспорте из Reporting Services 2008 R2 в Excel
Помимо того, что вертикальный текст теперь стало возможным разворачивать как сверху вниз, так и снизу вверх, еще одной приятной мелочью в 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 мы получим только номера страниц.
Алексей Шуленин