Как получить именованные листы Excel при экспорте из SSRS - PullRequest
33 голосов
/ 10 апреля 2009

Всякий раз, когда отчет в одну страницу экспортируется в Excel, лист в Excel именуется именем отчета. Если в отчете несколько страниц, листы называются sheet1, sheet2, .... Есть ли способ указать имена листов в SSRS 2005?

решение: Нашел это после некоторого гугления: Изменение имен листов в SQL Server RS ​​Excel: QnD XSLT

Попробую и выложу обновление, если оно работает.

Ответы [ 10 ]

22 голосов
/ 15 июня 2016

Necromancing, на случай, если все ссылки погаснут:

  1. Добавить группу в свой отчет
    Кроме того, рекомендуется установить здесь порядок сортировки группового выражения, чтобы вкладки были отсортированы по алфавиту (или по вашему желанию).

    1. Add a group to your report

    • «Zeilengruppe» означает «Целевая группа»
    • «Gruppeneigenschaften» означает «Свойства группы»
  2. Установить разрыв страницы в свойствах группы 2. Set the page break in the group properties

    • «Seitenumbruche» означает «разрыв страницы»
    • «Zwischen den einzelnen Instanzen einer Gruppe» означает «Между отдельными экземплярами группы»
  3. Теперь вам нужно установить PageName Tablix Участник (группа), NOT PageName самого Tablix само по себе,
    Если вы получили нужный объект, в поле заголовка сетки свойств будет сказано «Tablix Member » (элемент Tablix на немецком языке). Если это неправильный объект, в поле заголовка сетки свойств будет указано only"table / tablix" (без member ).

  4. Примечание. Если вместо элемента tablix вы получите табликс, на каждой вкладке будет одно и то же имя, за которым следует (tabNum)! Если это произойдет, теперь вы знаете, в чем проблема. Tablix Member

MultiTabExcelFile

15 голосов
/ 08 августа 2012

Для экспорта на разные листы и использования пользовательских имен, начиная с SQL Server 2008 R2, это можно сделать с помощью комбинации группировки, разрывов страниц и свойства PageName группы.

В качестве альтернативы, если вы хотите дать конкретное имя только одному листу, попробуйте свойство InitialPageName в отчете.

Для более подробного объяснения, посмотрите здесь: http://blog.hoegaerden.be/2011/03/23/where-the-sheets-have-a-name-ssrs-excel-export/

5 голосов
/ 17 июля 2012

В SSRS 2008 R2 используйте PageName свойство группы страниц: http://bidn.com/blogs/bretupdegraff/bidn-blog/234/new-features-of-ssrs-2008-r2-part-1-naming-excel-sheets-when-exporting-reports

3 голосов
/ 16 июля 2015

Чтобы добавить имена вкладок при экспорте в Excel, я использовал следующий метод:

  • В окне дизайна отчета выберите объект tablix.
  • Открыть окно свойств объекта tablix.
  • Добавьте требуемое имя вкладки в свойство PageName.
  • Запустить отчет
  • Экспорт отчета в Excel.
  • Теперь имя рабочего листа совпадает со свойством PageName объекта tablix.
2 голосов
/ 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
1 голос
/ 21 марта 2017

Метод Прямоугольник

Самый простой и надежный способ достижения рабочих листов / разрывов страниц - это использование инструмента «Прямоугольник».

Сгруппируйте свою страницу в прямоугольники или один прямоугольник, который заполняет страницу в дополнительном отчете, следующим образом:

  • Самый быстрый способ размещения прямоугольника - нарисовать его вокруг объектов, которые вы хотите разместить в прямоугольнике.

  • Щелкните правой кнопкой мыши и в меню макета отправьте прямоугольник назад.

  • Выберите все свои объекты и слегка перетащите их, но убедитесь, что они приземляются в том же месте, где они были. Теперь все они будут в прямоугольнике.

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

Рабочие листы будут названы так же, как и название страницы.

Повторяющиеся имена будут иметь суффикс числа в скобках.

Примечание: Убедитесь, что имена являются действительными именами листа.

1 голос
/ 10 октября 2014

Мне удалось это сделать, выполнив более сложные инструкции, предложенные Валентино Вранкеном и Рао, но здесь есть более простой подход к более простому отчету. Это поместит каждую таблицу на отдельный лист и назовет их в Excel. Похоже, что это не влияет на другие экспорты, такие как PDF и Word.

Сначала в Tablix Properties ваших таблиц под General отметьте либо Add a page break before or after, это разделит отчет на листы.

Затем в каждой таблице щелкните таблицу, затем в представлении Grouping, на стороне Row Groups выберите родительскую группу или группу строк по умолчанию, а затем в представлении Properties в разделе Group -> PageBreak set BreakLocation до None и PageName до имени листа.

1 голос
/ 01 октября 2009

Прямого пути нет. Вы либо экспортируете XML, а затем исправляете XSLT, чтобы правильно отформатировать его (это трудный путь). Проще всего написать несколько отчетов без явных разрывов страниц, чтобы каждый экспортировал их на один лист только в Excel, а затем написал сценарий, который бы слился для вас. В любом случае требуется шаг постобработки.

0 голосов
/ 27 августа 2015

Хотя такое использование свойства PageName объекта фактически позволяет настраивать экспортированные имена листов в Excel, имейте в виду, что оно также может обновлять определения пространств имен вашего отчета, что может повлиять на возможность повторного развертывания отчета в вашем сервер.

У меня был отчет, к которому я применил это в BIDS, и он обновил мое пространство имен с 2008 по 2010 год. Когда я попытался опубликовать отчет на сервере отчетов 2008R2, я получил сообщение об ошибке, что пространство имен недопустимо, и мне пришлось вернуть все обратно. Я уверен, что моё обстоятельство может быть уникальным, и, возможно, это не всегда случится, но я подумал, что о нем стоит рассказать. Как только я обнаружил проблему, эта страница помогла вернуть пространство имен обратно (есть некоторые теги, которые также должны быть удалены в дополнение к сбросу пространства имен):

http://beatheadagainstwall.blogspot.com/2011/03/invalid-target-namespace-when-deploying.html?showComment=1440647962263#c5741523651495876761

0 голосов
/ 06 октября 2009

Вы можете использовать -sed- и -grep- для замены или записи в заголовок xml каждого файла, указав желаемое имя листа, например, имя листа1, между любыми вхождениями тегов:

<Sheetnames>?sheetname1?</Sheetnames>
...