Источник:
http://axforum.info/forums/blog.php?b=383
==============
Всякий раз, когда я берусь писать отчет SSRS я узнаю что-то новое об этой потрясающей технологии. Как правило, я нахожу баг из числа тех, что обещают исправить начиная с 2005 версии, но все как-то не доходят руки...
В этот раз я столкнулся со следующей проблемой: если в заголовках таблицы есть объединенные ячейки (merge cells) под которыми находятся многострочные поля, то при экспорте в Excel они становятся однострочными.
Сложно сказать чей это дефект, так как в Excel они форматироваться тоже отказываются, однако пользователь справедливо негодует.
Предлагаю вам очередное решение класса "Порно, зато задорно". Суть этого решения в добавлении дополнительного столбца, который будет "эталоном роста". Столбец нужно поместить сбоку от объединенного заголовка и поместить в него нужное количество переносов строки. Столбец не может быть невидимым, иначе в Excel он не попадет. Итак, пошаговое руководство:
1. Создайте новый столбец так, чтобы над ним не было группированных ячеек. Например, поместите его первым или последним.
2. Откройте свойства отчета и на вкладку Code добавьте следующую функцию:
X++:
Public Function Grow(ByVal
str As String, ByVal divider As Double, debug As Boolean) As String Dim height As Integer = CInt(
str.Length / divider) Dim dummy As String = CStr(IIf(debug, CStr(
str.Length) +
"/" + CStr(height),
""))
For i As Integer = 1 To height - 1 dummy += vbCrLf Next
Return dummyEnd Function
Чтобы открыть свойства отчета, находясь в на вкладке с макетом нажмите меню Report:
2. В качестве выражения (Expression) для ячейки нового столбца введите:
X++:
= Code.Grow(ReportItems!.Value, , )
В качестве первого параметра функция принимает строку длинна которой определяет количество строк. В данном примере, строка берется не из датасета, а из самой ячейки отчета. Имя ячейки можно узнать в окне свойств:
Второй параметр - делитель, на который требуется разделить длину строки, чтобы получить корректное число строк, которые она занимает. Делитель зависит от размеров поля, шрифта и отступов, поэтому задается на глаз, в "попугаях".
Третий параметр - режим отладки. Если он включен, то в начале строки добавляется значение в формате "Длинна строки / Количество строк". Этот параметр используется чтобы было проще подогнать делитель. Перед публикацией отчета его нужно выставить в значение False.
Удачи!
Источник:
http://axforum.info/forums/blog.php?b=383