AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.03.2013, 11:11   #1  
Blog bot is offline
Blog bot
Участник
 
25,640 / 848 (80) +++++++
Регистрация: 28.10.2006
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, напишите личное сообщение администратору.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: How to copy a budget to a new budget in AX 2012 using Excel Add-in Blog bot DAX Blogs 0 27.11.2012 15:11
DynamicsAxSCM: Visualizing Security in Microsoft Dynamics AX 2012 Blog bot DAX Blogs 0 29.08.2011 13:11
DynamicsAxSCM: Personalization of Role Centers in Dynamics AX 2009 Blog bot DAX Blogs 0 21.06.2010 16:05
Экспорт стандартных отчетов в Excel ? ena_ax DAX: Программирование 14 12.04.2010 14:16
Экспорт отчетов в Excel tolstjak DAX: Прочие вопросы 10 18.02.2004 09:12

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:15.