Progress-servis55.ru

Новости из мира ПК
195 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Fastreport excel export

C# Разработка

Блог о создании приложений на платформе .NET Framework

29 октября 2018 г.

Решение нетипичных проблем с FastReport.

Статья будет состоять из способов решения проблем с FastReport ver. 2018.3.20. Проблемы изложенная тут может быть исправлена в последующих версиях FastReport либо отсутствовать в прошлых. Так же не исключаю, что я могу не знать что то, тогда если вам известно решение, то буду рад комментариям. Заранее Спасибо!

Темы описанные в статье:

  1. Автоматическая высота строки для текста не помещающегося в ячейку.
  2. Как обойти в коде все строки таблицы DataSource.
  3. Как использовать Linq или подключить сборки в отчёт FastReport.
  4. Объединение ячеек таблицы.
  5. Не работающий междустрочный интервал.
  6. Примеры использования условного оператора IIF(,,) в дизайнере отчёта.
  7. Сортировка и группировка данных в таблице отчёта.
  8. При экспорте в Excel или в Html большой таблицы, ячейки начинают биться либо появляется разделительная линия.

1. Автоматическая высота строки для текста не помещающегося в ячейку.

  1. CanGrow (Может расти) у DataBand таблицы:


Если ячейки сделаны через TextObject тогда следуем всем им проставить признак CanGrow (Может расти):


Если в качестве контейнера ячеек используете TableObject (что намного удобнее, нежели если использовать много TextObject), тогда следует выбрать AutoSize=True для вытягивания строк таблицы.

  1. Добавление новой строки в ячейке, где данные не умещаются
  2. В новой строке добавить «Невидимый символ», что бы не срабатывало автоматическое обрезание, которое по непонятным причинам происходит даже с выставленным Trimming=None свойством.

2. Как обойти в коде все строки таблицы DataSource.

3. Как использовать Linq или подключить сборки в отчёт FastReport.

4. Объединение ячеек таблицы.

В ситуации, когда планируется создать не просто сетку таблицы, а объединенные ячейки по какому то признаку, можно использовать свойство ячейки Duplicates со значение Merge. Что это означает? Каждый раз, когда в очередной строке значение ячейки совпадает со значений ячейки в предыдущей строке, FastReport, вместо печати дубля, объединяет ячейку в одну.

Читать еще:  Сортировка ячеек в excel

5. Не работающий междустрочный интервал.

Только лишь в этой комбинации эффект междустрочного интервала начал работать.

6. Примеры использования условного оператора IIF(,,) в дизайнере отчёта.

Приведу формат и парочку примеров, по которым сразу станет ясно использование оператора:

Формат:
[IIf(Condition, True, False)]

Пример 1. Если значение CompleteDate не равен null, тогда выводим текст год, иначе пусто:
[IIf([ActTechnicalEvent.CompleteDate] != null, «год»,null)]

Пример 2. Если первая буква имени А, тогда к имени добавляем префикс «*».
[IIf(Length([spt_values.name]) > 1 && UpperCase(Substring([spt_values.name], 0, 1)) == «A», «*» + [spt_values.name], [spt_values.name])]

Внимание! Если у вас ошибка «Error CS0103: The name ‘IIF’ does not exist in the current context» это из-за того, что название является регистрозависимым, и само имя написано неверно. Следует использовать IIf имя для условного оператора.

7. Сортировка и группировка данных в таблице отчёта.

Самая простая операция при формировании данных таблицы. Для обоих настроек существует 2 вкладки в настройках DataBand (Sort и Filter), отвечающие за эти действия. Для их настройки необходимо вызвать контекстное меню на DataBand (оранжевая область) и выбрать пункт меню Edit (Редактирование).

Внимание! Результат выражения во вкладке фильтрация должен быть Boolean, то есть в этом поле задаётся условие, как если бы было написано IF ( ВашеУсловиеВФильтре ) ВыводимСтроку ELSE Невыводим.

8. При экспорте в Excel или в Html большой таблицы, ячейки начинают биться либо появляется разделительная линия.

По началу данная природа поведения при экспорте мне была не понятна, с какой то фиксированной периодичностью ячейки бились невидимой линией. Но вскоре я понял, что данным разделителем является высота листа A4 при печати. А для того, что бы FastReport не добавлял разделительных линий необходимо поставить UnlimitedHeight в True для страницы отчёта:

Читать еще:  Пользовательский автофильтр в excel

Fastreport экспорт в excel

Как сделать в FastReport экспорт в Excel в т.ч. без показа диалогов и без разрывов страниц? Приведите пожалуйста полный пример.

1 ответ 1

Где frXLSExport1 — имя компонента для экспорта с закладки Fastreport Exports, который вы кинули на форму, FileName — имя файла, в который хотите сохранить.

Может отличаться для разных версий Дельфи и FastReport.

пытаюсь экспортировать отчет из FR3 в Excel
(отчет — матричный
у числовых полей выставлен DisplayFormat:
DecimalSeparator = ‘.’
FormatStr = %.2f
Kind = fkNumeric)

возникла проблема с сохранением числовых данных
некоторые числа в Excel автоформатируются в дату (например 5.50)
как это можно отключить

P.S.
в исходниках произходит формирование массива Variant и его передача в Excel, тоесть здесь явно формат не пропишешь 🙁

P.P.S.
если изменить DecimalSeparator на ‘,’ то все числовые значения преобразуются в текст

спасибо за ответы, вроде что то стало получаться
но в исходниках FR есть вот такая строка:

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

спасибо
P.S.
в VBA не силен, а в их хелпе сколько не пытался найти необходимую информацию так и не смог 🙁

Цитата
.Range.

это не страница, а диапазон
знач зарпанее укажи диапазон

спасибо
ещё вопрос про эту же строку

где
Obj.StyleIndex = 1
FExcel.Range.Style становиться $001acddc

ктонибудь в курсе как распарсить этот стиль?

serjufa

1. Не могу понять, почему в frxReportTable.DesignReport просмотр нормальный

а в excel часть страницы переносится на 2-й лист вправо. Все — на одном и том же компе.

2. Почему строка 34 такая высокая? Почему место, отведенное ReportTitle на первом листе, занимается пустотой и на след. листах

Читать еще:  Определение дня недели в excel

Barmutik

Да проверьте сами что он там генерит .. у меян был прикол с экспортом в Эксель если не показывать окошко прогресса.. такую бороду экспортило что ужас .. помто поколупавшись по их коду поправил в 4 местах ошибки.

Так что может и у Вас чего похожее.

serjufa

Окно прогресса пришлось оставить по тем же причинам. но это меня мало волнует — юзер будет видеть, что комп не висит.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector