20.03.2013, 11:11 | #1 |
Участник
|
axforum blogs: Форматирование таблиц отчетов под экспорт в Excel
Источник: 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
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
|
|