Экспорт служб отчетов в Excel с несколькими листами - PullRequest
50 голосов
/ 20 января 2009

В настоящее время я создаю отчет MS Reporting Services, который будет обработан в Excel. Я пытаюсь выяснить, как настроить отчет так, чтобы он создавал несколько рабочих таблиц (вкладок) данных в отчете. Я понимаю, что введение разрыва страницы в отчете дает вам новый рабочий лист, однако есть способ присвоить каждой вкладке имя вместо ее по умолчанию (рабочий лист 1, рабочий лист 2) и т. Д.

Кто-нибудь знает, как это делается?

Заранее спасибо!

Ответы [ 8 ]

54 голосов
/ 30 ноября 2010

Уже поздно для первоначального вопроса, но с SQL Server 2008 R2 это теперь возможно:

Установите свойство «Разрыв страницы» для таблицы или таблицы или другого элемента, чтобы вызвать новую вкладку, а затем установите свойство «Имя страницы» как для элемента до разрыва страницы, так и для элемента после разрыва страницы. Эти имена будут отображаться на вкладках при экспорте отчета в Excel.

Читайте об этом здесь: http://technet.microsoft.com/en-us/library/dd255278.aspx

38 голосов
/ 15 января 2014

Вот скриншоты для SQL Server 2008 R2 с использованием конструктора отчетов SSRS в Visual Studio 2010.

Я сделал скриншоты, так как некоторые из диалогов не так легко найти.

1: Добавить группу

SsrsAddGroup

2: укажите поле, которое вы хотите сгруппировать по

SsrsAddGroupDialog

3: Теперь нажмите на группу в селекторе «Группы строк», прямо под конструктором отчетов

SsrsRowGroupsSelector

4: F4 для выбора панели свойств; разверните «Group» и установите Group> PageBreak> BreakLocation = «Between», затем введите желаемое выражение для Group> PageName

SsrsGroupProperty

5: Вот пример выражения

SsrsGroupPropertyDialog

Вот результат отчета, экспортированного в Excel, с именами вкладок в соответствии с выражением PageName

SsrsExcelTabs

11 голосов
/ 20 января 2009

Как указывало @ huttelihut , теперь это возможно с SQL Server 2008 R2 - Подробнее здесь

До 2008 R2 это не представляется возможным, но MSDN Social имеет некоторые предлагаемые обходные пути.

5 голосов
/ 29 января 2014

Решение от Эдварда сработало для меня.

Если вы хотите, чтобы весь табликс на одном листе с постоянным именем, укажите PageName в Свойствах табликса. Если вы зададите PageName в Свойствах таблицы, вы не сможете использовать в своем выражении данные из набора данных таблицы.

Если вы хотите, чтобы строки из табликса были сгруппированы в листы (или вам нужен один лист с именем на основе данных), укажите PageName в заголовке группы.

2 голосов
/ 10 августа 2011

Я нашел простой способ обойти это в 2005 году. Вот мои шаги:

  1. Создайте строковый параметр со значениями «Y» и «N» с именем «PageBreaks».
  2. Добавьте уровень группы над группой (значением), который использовался для разделения данных на несколько листов в Excel.
  3. Вставленное в первое текстовое поле для этой группы выражение для «PageBreaks» как таковое… =IIF(Parameters!PageBreaks.Value="Y",Fields!DISP_PROJECT.Value,"") Примечание. Если параметр = ’Y’, вы получите несколько листов для каждого отдельного значения. В противном случае поле имеет значение NULL для каждой записи группы (что вызывает только один разрыв страницы в конце).
  4. Измените скрытое значение видимости новой строки группировки на «True».
  5. ПРИМЕЧАНИЕ. Когда вы сделаете это, он также определит, есть ли у вас разрыв страницы в представлении, но моим пользователям это нравится, поскольку они имеют контроль.
1 голос
/ 15 июня 2011

Поместите имя вкладки в заголовок страницы или группу 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
0 голосов
/ 14 марта 2013

В группе нажмите F4 и найдите имя страницы, в свойствах и назовите страницу, это должно решить вашу проблему

0 голосов
/ 13 июля 2010

Сгруппируйте данные своего отчета по категории, на которой вы хотите, чтобы ваши листы были основаны. Укажите, что вы хотите, чтобы эта группа начинала новую страницу для каждой новой категории. Каждая страница становится новым листом в книге Excel.

Примечание. Я использую SQL Server 2003 и Excel 2003.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...