Работа с шаблонами отчётов в формате RTF

Обсуждение Stimulsoft Reports.NET
Eugene A. Bykov
Сообщения: 52
Зарегистрирован: 28 июн 2006, 05:34
Откуда: Ekaterinburg, Russia

Работа с шаблонами отчётов в формате RTF

Сообщение Eugene A. Bykov »

Добрый день,

Занялись разработкой новой системы взамен устаревшей. Одна из функций подразумевает подготовку отчётов, шаблоны которых присылает заказчик в формате RTF.

Как это работает сейчас? Шаблоны заказчика довольно простые. Нам необходимо заполнить 3-4 поля, остальной текст остаётся без изменений. Мы используем компонент Дельфи EkRtf, который позволяет указать поля ввода в RTF-файле в формате \VARIABLE\, а отчетогенератор затем берёт этот шаблон, и подставляет значение передаваемой переменной VARIABLE в то место, где в шаблоне фигурирует текст \VARIABLE\ с сохранением исходного форматирования. Есть ряд других фич (таблицы, например), но они нами сейчас в шаблонах такого типа не используются.
Так вот вопрос. Есть ли возможность выполнить эту же операцию средствами генератора отчётов StimulSoft? Я обнаружил возможность конвертации шаблонов RTF в формат отчётов StimulSoft, т.е. внутренние способы работы с RTF есть (как на чтение - Import.RTF.exe, так и на запись - Экспорт отчёта в RTF). Может быть, сможете указать, в каком направлении думать. Либо, есть ли возможности программной работы с шаблонами в формате RTF. Проблема в том, что конвертер весь файл RTF преобразует в ДатаБенды, поабзацно, изменяя форматирование, что не совсем хорошо.

Спасибо,
С уважением,
Евгений
Eugene A. Bykov
Сообщения: 52
Зарегистрирован: 28 июн 2006, 05:34
Откуда: Ekaterinburg, Russia

Работа с шаблонами отчётов в формате RTF

Сообщение Eugene A. Bykov »

Причины разработки новой системы - не только смена генератора отчётов. Основные - это миграция базы данных с DBF на MSSQL, реализация технологии штрих-кодов (как раз смена отчетогенератора), а также разработка более современного интерфейса с использованием платформы .NET.
Ivan
Сообщения: 641
Зарегистрирован: 10 авг 2006, 05:40
Откуда: Stimulsoft Office

Работа с шаблонами отчётов в формате RTF

Сообщение Ivan »

Здравствуйте.

Как вариант решения задачи, вы можете вставить в отчет компонент StiRichText, в него загрузить ваш rtf-шаблон, и в нужных местах вставить выражения типа {DataBase.Field} или {Variable}. В свойстве Tag компонента напишите слово "rtfparagraph" для того, чтобы при экспорте в RTF исходный шаблон лежал прямо на странице. а не был обёрнут в таблицу.

Утилита Import.RTF предназначена не для импорта текста, а для преобразования исходного текста в шаблон отчета. Эта утилита бывает полезна, если есть форма отчета с таблицами в формате RTF, которую надо заполнить данными. При импорте таблицы преобразуются в бэнды, а ячейки таблиц в текстбоксы. Остается только правильно вписать выражения для данных.

Спасибо.
Eugene A. Bykov
Сообщения: 52
Зарегистрирован: 28 июн 2006, 05:34
Откуда: Ekaterinburg, Russia

Работа с шаблонами отчётов в формате RTF

Сообщение Eugene A. Bykov »

Спасибо за ответ.
А возможно ли в StiReachText загрузить текст из шаблона RTF программным путём?
Ivan
Сообщения: 641
Зарегистрирован: 10 авг 2006, 05:40
Откуда: Stimulsoft Office

Работа с шаблонами отчётов в формате RTF

Сообщение Ivan »

Здравствуйте.

Вы можете использовать следующий код, к примеру:

Код: Выделить всё

            RichTextBox rtb = new RichTextBox();
            rtb.LoadFile(@"d:\test.rtf");
            StiRichText rt = new StiRichText();
            rt.RtfText = rtb.Rtf;
Спасибо.
Eugene A. Bykov
Сообщения: 52
Зарегистрирован: 28 июн 2006, 05:34
Откуда: Ekaterinburg, Russia

Работа с шаблонами отчётов в формате RTF

Сообщение Eugene A. Bykov »

Спасибо!
Andrew
Сообщения: 586
Зарегистрирован: 09 июн 2006, 12:22

Работа с шаблонами отчётов в формате RTF

Сообщение Andrew »

Всегда рады помочь! :biggrin:
Eugene A. Bykov
Сообщения: 52
Зарегистрирован: 28 июн 2006, 05:34
Откуда: Ekaterinburg, Russia

Работа с шаблонами отчётов в формате RTF

Сообщение Eugene A. Bykov »

Добрый день,
Довольно старая тема, но ввиду индивидуальной работы над разными проектами, иногда проходит много месяцев, когда появляется возможность вернуться к старым проектам.

Так вот, шаблон в формате rtf импортируется прекрасно предлагаемым способом, и передаётся в RichText в отчете:

Код: Выделить всё

                report = new StiReport();
                report.Load("post.mrt");
                StiRichText rt = report.GetComponents()["RichText1"] as StiRichText;
                RichTextBox rtb = new RichTextBox();
                rtb.LoadFile(tTemplate.Text);
                rt.RtfText = rtb.Rtf;
                //report.Compile();
                report.RegData(sqlAccess.PersonList(Convert.ToInt32(radDropDownList1.SelectedValue)));
                //report.Render();
                report.Show();
Но поля, заключенные в круглые скобки, приводят к ошибке Unexpected character '\'

Этого можно избежать, передавая рич текст в виде только текста:

Код: Выделить всё

   rt.RtfText = rtb.Rtf;
но тогда теряется форматирование, что тоже не есть хорошо.

Если задать фигурные скобки напрямую внутри рич текста компонента, не используя программного импорта из файла RTF - то шаблон работает (правда есть проблемы с кодировкой, но я не изучал корень этих проблем, т.к. напрямую внутри компонента задавать rtf неактуально).

Импорт RTF-текста вручную в дизайнере почему-то тоже приводит к ошибкам. Как-то не так обрабатывается rtf? Причём даже превью такого отчета сваливается с той же ошибкой.

На файлообменник залил шаблон mrt, с текстом, который приводит к ошибкам.
https://www.wetransfer.com/dl/7A2Qn2yX/ ... 7f13ea9667

Спасибо.
Eugene A. Bykov
Сообщения: 52
Зарегистрирован: 28 июн 2006, 05:34
Откуда: Ekaterinburg, Russia

Работа с шаблонами отчётов в формате RTF

Сообщение Eugene A. Bykov »

Прошу прощения, в шаблоне я уже начал экспериментировать со скобками, пытаясь добавить слеш перед ними - но это не привело к решению проблемы.
Суть задачи - указать в Rtf-шаблоне ссылку на данные, передаваемые в DataTable, называемой TemplateData.
Ivan
Сообщения: 641
Зарегистрирован: 10 авг 2006, 05:40
Откуда: Stimulsoft Office

Работа с шаблонами отчётов в формате RTF

Сообщение Ivan »

Здравствуйте.

Основная проблема при работе с RTF-текстом - системная библиотека не позволяет полноценно работать с ним из кода, в частности, работать с командами и управляющими кодами.
Например, если вручную ввести выражение {datasource.field} в редакторе RTF, то библиотека может вставить внутрь этого текста свои управляющие символы, например может получиться

Код: Выделить всё

 {dataSource.F\f1\lang1033 ield\}
И правильно распарсить такое выражение уже практически невозможно, поэтому и происходят ошибки компиляции.
Если это выражение скопировать целиком из блокнота, то оно вставится нормально.

Как ручной вариант решения проблемы - вставлять выражение вместе с фигурными скобками из блокнота.

Мы попробуем что-нибудь доработать.

Спасибо.
Ответить