Экспорт служб отчетов в Excel с несколькими листами
В настоящее время я создаю отчет MS Reporting Services, который будет отрисован в Excel. Я пытаюсь выяснить, как настроить отчет так, чтобы он создавал несколько рабочих таблиц (вкладок) данных в отчете. Я понимаю, что при вводе разрыва страницы в отчете вы получаете новый лист, однако есть способ присвоить каждой вкладке имя по умолчанию (рабочий лист 1, рабочий лист 2) и т. Д.
Кто-нибудь знает, как это делается?
Заранее спасибо!
8 ответов
Как отметил @huttelihut, это стало возможным начиная с SQL Server 2008 R2 - подробнее здесь
До 2008 R2 это не казалось возможным, но у MSDN Social есть некоторые предлагаемые обходные пути.
Позднее для первоначального задающего вопрос, но с SQL Server 2008 R2 это теперь возможно:
Установите свойство "Разрыв страницы" для таблицы или таблицы или другого элемента, чтобы вызвать новую вкладку, а затем установите свойство "Имя страницы" как для элемента до разрыва страницы, так и для элемента после разрыва страницы. Эти имена появятся на вкладках при экспорте отчета в Excel.
Прочитайте об этом здесь: http://technet.microsoft.com/en-us/library/dd255278.aspx
Вот снимки экрана для SQL Server 2008 R2 с использованием конструктора отчетов SSRS в Visual Studio 2010.
Я сделал скриншоты, так как некоторые из диалогов не так легко найти.
1: добавить группу
2: Укажите поле, по которому вы хотите сгруппировать
3. Теперь нажмите на группу в селекторе "Группы строк", прямо под конструктором отчетов.
4: F4 для выбора панели свойств; разверните "Group" и установите Group > PageBreak > BreakLocation = "Between", затем введите желаемое выражение для Group> PageName
5: Вот пример выражения
Вот результат отчета, экспортированного в Excel, с вкладками, названными в соответствии с выражением PageName
Решение от Эдварда сработало для меня.
Если вы хотите, чтобы весь табликс находился на одном листе с постоянным именем, укажите PageName в Свойствах табликса. Если вы зададите PageName в Свойствах табликса, вы не сможете использовать данные из набора данных Табликса в своем выражении.
Если вы хотите, чтобы строки из табликса были сгруппированы в листы (или вам нужен один лист с именем на основе данных), укажите PageName в заголовке группы.
Я нашел простой способ обойти это в 2005 году. Вот мои шаги:
- Создайте строковый параметр со значениями "Y" и "N" с именем "PageBreaks".
- Добавьте уровень группы над группой (значением), которая использовалась для разделения данных на несколько листов в Excel.
- Вставленное в первое текстовое поле для этой группы выражение для PageBreaks как таковое…
=IIF(Parameters!PageBreaks.Value="Y",Fields!DISP_PROJECT.Value,"")
Примечание. Если параметр = 'Y', вы получите несколько листов для каждого отдельного значения. В противном случае поле имеет значение NULL для каждой записи группы (что вызывает только один разрыв страницы в конце). - Измените скрытое значение видимости новой строки группировки на "True".
- ПРИМЕЧАНИЕ. Когда вы сделаете это, он также определит, есть ли у вас разрыв страницы в представлении, но мои пользователи любят это, так как они имеют контроль.
Поместите имя вкладки в заголовок страницы или группу TableRow1 в своем отчете, чтобы оно отображалось в позиции "А1" на каждом листе Excel. Затем запустите этот макрос в своей книге Excel.
Sub SelectSheet()
For i = 1 To ThisWorkbook.Sheets.Count
mysheet = "Sheet" & i
On Error GoTo 10
Sheets(mysheet).Select
Set Target = Range("A1")
If Target = "" Then Exit Sub
On Error GoTo Badname
ActiveSheet.Name = Left(Target, 31)
GoTo 10
Badname:
MsgBox "Please revise the entry in A1." & Chr(13) _
& "It appears to contain one or more " & Chr(13) _
& "illegal characters." & Chr(13)
Range("A1").Activate
10
Next i
End Sub
Сгруппируйте данные своего отчета по категории, на которой вы хотите, чтобы ваши листы были основаны. Укажите, что вы хотите, чтобы эта группа начинала новую страницу для каждой новой категории. Каждая страница становится новым листом в книге Excel.
Примечание: я использую SQL Server 2003 и Excel 2003.
В группе нажмите F4 и найдите имя страницы, в свойствах и назовите вашу страницу, это должно решить вашу проблему