Как получить именные листы excel при экспорте из SSRS
Всякий раз, когда отчет одной страницы экспортируется в excel, лист в excel называется именем отчета.
Если в отчете имеется несколько страниц, листы называются листами1, sheet2,....
Можно ли указать имена листов в SSRS 2005?
решение:
Нашел это после некоторых googleing:
Изменение имен листов в SQL Server RS Excel: QnD XSLT
Попробуй и опубликуйте обновление, если оно будет работать.
Ответы
Ответ 1
Некромантия, на всякий случай, все ссылки становятся темными:
-
Добавить группу в свой отчет
Кроме того, рекомендуется указать порядок сортировки выражения группы здесь, поэтому вкладки будут отсортированы в алфавитном порядке (или, тем не менее, вы хотите, чтобы они отсортировались).
![1. Добавить группу в отчет]()
- "Zeilengruppe" означает "Целевая группа"
- "Gruppeneigenschaften" означает "Свойства группы"
-
Установите разрыв страницы в свойствах группы
![2. Установите разрыв страницы в свойствах группы]()
- "Seitenumbruche" означает "разрыв страницы"
- "Zwischen den einzelnen Instanzen einer Gruppe" означает "Между отдельными экземплярами группы"
-
Теперь вам нужно установить PageName
элемента Tablix (группа), НЕ PageName
в Tablix selfs.
Если вы получили нужный объект, если в поле заголовка сетки свойств будет указано "Tablix Member" (Tablix-Element на немецком языке). Если это неправильный объект, он будет указывать только "table/tablix" (без члена) в поле заголовка сетки свойств.
-
Примечание. Если вы выберете tablix вместо элемента tablix, он поместит одно и то же имя вкладки на каждой вкладке, а затем (tabNum)
! Если это произойдет, вы теперь знаете, в чем проблема.
![Tablix Member]()
![MultiTabExcelFile]()
Ответ 2
Чтобы экспортировать на разные листы и использовать пользовательские имена, с SQL Server 2008 R2 это можно сделать, используя комбинацию группировки, разрывов страниц и свойства PageName группы.
В качестве альтернативы, если только один лист, который вы хотите указать конкретному имени, попробуйте свойство InitialPageName в отчете.
Для более подробного объяснения, посмотрите здесь: http://blog.hoegaerden.be/2011/03/23/where-the-sheets-have-a-name-ssrs-excel-export/
Ответ 3
В 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
Ответ 4
Поместите имя вкладки в заголовок страницы или группу 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
Ответ 5
Чтобы добавить имена вкладок при экспорте в excel, я использовал следующий метод:
- В окне проекта отчета выберите объект tablix.
- Откройте окно свойств объекта tablix.
- Добавьте нужное имя вкладки в свойство
PageName
.
- Запустите отчет
- Экспорт отчета в Excel.
- Теперь имя рабочего листа совпадает с свойством
PageName
объекта tablix.
Ответ 6
Нет прямого пути. Вы либо экспортируете XML, а затем правильно XSLT, чтобы отформатировать его правильно (это трудный путь). Более простой способ состоит в том, чтобы писать несколько отчетов без явных разрывов страниц, поэтому каждый из них экспортируется в один лист только в excel, а затем записывает script, который будет сливаться для вас. В любом случае это требует постобработки.
Ответ 7
Мне удалось это сделать, следуя более сложным инструкциям, предложенным Валентино Вранкеном и Рей, но вот более простой подход, для более простого отчета. Это поместит каждую таблицу на отдельный лист и назовет их в Excel. Похоже, что это не влияет на другой экспорт, такой как PDF и Word.
Сначала в Tablix Properties
ваших таблиц в General
, проверьте либо Add a page break before or after
, что отделяет отчет от листов.
Затем в каждой таблице щелкните таблицу, а затем в представлении Grouping
на стороне Row Groups
выберите родительскую группу или группу строк по умолчанию, а затем в представлении Properties
в разделе Group -> PageBreak
установите BreakLocation
до None
и PageName
к имени листа.
Ответ 8
Метод Rectangle
Самый простой и надежный способ получения рабочих листов/разрывов страниц - использование инструмента прямоугольника.
Группируйте свою страницу внутри прямоугольников или одного прямоугольника, который заполняет страницу в сводном отчете следующим образом:
-
Самый быстрый способ размещения прямоугольника - рисовать его вокруг объектов, которые вы хотите разместить в прямоугольнике.
-
Щелкните правой кнопкой мыши и в меню макета отправьте прямоугольник обратно.
-
Выделите все свои объекты и слегка перетащите их, но убедитесь, что они приземлились там же. Все они теперь будут в прямоугольнике.
В свойствах прямоугольника вы можете установить разрыв страницы в начале или в конце прямоугольника, а имя страницы может быть основано на выражении.
Листы будут называться так же, как имя страницы.
У повторяющихся имен будет число в скобках.
Примечание. Убедитесь, что имена являются допустимыми именами таблиц.
Ответ 9
Вы можете использовать -sed- и -grep- для замены или записи в заголовок xml каждого файла с указанием желаемого имени листа, например, имя листа1, между любым вхождением тегов:
<Sheetnames>?sheetname1?</Sheetnames>
Ответ 10
Хотя это использование свойства PageName на объекте фактически позволяет вам настраивать экспортированные имена листов в Excel, следует предупредить, что он также может обновлять определения пространства имен отчета, что может повлиять на возможность повторного развертывания отчета на вашем сервер.
У меня был отчет о том, что я применил его к BIDS, и он обновил мое пространство имен с 2008 по 2010 год. Когда я попытался опубликовать отчет на сервере отчетов 2008R2, у меня возникла ошибка в том, что пространство имен недействительно и должно было вернуть все обратно. Я уверен, что мои обстоятельства могут быть уникальными, и, возможно, это не всегда произойдет, но я подумал, что это достойно опубликовать. Как только я нашел проблему, эта страница помогла вернуть обратно пространство имен (в дополнение к сбросу пространства имен также необходимо удалить теги):
http://beatheadagainstwall.blogspot.com/2011/03/invalid-target-namespace-when-deploying.html?showComment=1440647962263#c5741523651495876761