Пользовательское именование листов при экспорте из 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 мы получим только номера страниц. Автор: Алексей Шуленин |