Как получить именованные листы excel при экспорте из SSRS

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

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

попробует и опубликует обновление, если оно работает.

10 ответов


Некромантия, на случай, если все ссылки потемнеют:

  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 Табликса (группы), не the PageName Табликса itselfs.
    Если вы получили правильный объект, если скажете "Табликс "(Табликс-элемент на немецком языке)в заголовке сетки свойств. Если это неправильный объект, он скажет только "таблица" / "табликс" (без ) в заголовке сетки свойств.

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

MultiTabExcelFile


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

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

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


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


поместите имя вкладки в заголовок страницы или группу TableRow1 в отчете, чтобы она отображалась в позиции " A1 " на каждом листе 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, я использовал следующий метод:

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

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


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

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

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


метод прямоугольника

самый простой и надежный способ достижения листов/разрывов страниц-использовать инструмент прямоугольник.

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

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

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

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

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

в листы будут называться так же, как название страницы.

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

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


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

<Sheetnames>?sheetname1?</Sheetnames>

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

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

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