Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Вниз

Новый способ формирования отчета в Ехcel !   Найти похожие ветки 

 
Dmitriy O. ©   (2004-04-06 13:23) [0]

Как я говорил раньше мне срочно понадобилось перевести кучу отчетов из Qreport в Excel. Притом уменя совершенно не было времени на изучение методов работы с COM и вспомогательных компанентов. И вот какой способ я нашел. С помощью его я без труда перевел все отчеты в Excel. Это я писал на одном из форумов.
Предлагаю свой способ быстрой конвертации отчета Qreport в Excel.
Многие пользуются для составления отчетов таким мощьным средством как QuickReport.
Прееимущества его очевидны можно построить сложный отчет очень быстро с min количеством кода. Но есть и недостатки
1.Не возможность редактировать готовый отчет
2.Трудности с просмотром сохранненых отчетов сторонним пользователям.
Так если с первым можно мерится то второе может вызвать серьезные трудности.
К сожелению фильтры не дают 100 % точного перевода отчета в общедоступный формат (Word, Excel);
Но есть очень лгкий и простой способ перевода такого отчета в Execel 1:1. С мин затрат времени и кода. Что помогает избежать необходимости  полностью  с нуля писать код формирования отчета в Excel. Это метод связывания компанента ActiveX  F1Book c готовым отчетом Qreport.
Вот этапы связывания.
1. Заготовить шаблон в Excel это создание шапки, колонтитулов, установка параметров страницы, определение форматов ячеек.  Т.к. отчет в Qrep печатается с 100 % маштабом то маштаб для страницы Excel  установить меньше (90-95 %).
2. Сохранить шаблон в формате Excel 4 . Формат старый и есть нюансы не поддерживается горизонтальное обьединение ячеек и вертикальный текст должен быть в одну строку.
3. Установить в программе fibook. Обьявить глобальную переменную типа интегер для счетчика строк.
4. Загрузка шаблона производится метом: (fe-name FiBook)
var
pFileType:smallint;
begin
row:=3;// счетчик строк
pFileType:=2; // excel 4
fe.Read("C:\otch2.xls",pFileType);// загрузка имя файла+ тип
5.Теперь идем в отчет QuickReport и связываем его с шаблоном.  Связываем в свойстве AfterPrint (BeforePrint) всех Qband отчета.
Пример:
Заголовок  отчета берем из Band типа Title fe.EntryRC[1,2]:=qrlabel2.Caption; // Qrlabel2-надпись заголовка в полосе Title;
Заголовки столбцов у нас уже есть но нам надо печатать их на каждой странице
(Прим: св-ва  fe.FixedRows:=row; и fe.PrintTitles:="a2:g2" не сохраняются и действуют только в текущей сессии). Поэтому пишем в AfterPrint полосы ColumHeader
if row>10 then begin
fe.setselection(2,1,2,7);// копируем шапку
fe.EditCopy;
fe.SetSelection(row,1,row,7);// вставляем шапку
fe.EditPaste;
fe.RowHeight[row]:=fe.RowHeight[2];// высота полосы шапки
fe.AddRowPageBreak(row);// вставляем разрыв страницы.
row:=row+1;
Теперь идем в полосу  Qrgroup  и обрабатывает ее AfterPrint.
fe.SetSelection(row,1,row,7);// выделили
fe.SetBorder(2,0,0,0,0,1,1,1,1,1,1); // начертили жирную рамку
fe.EntryRC[row,2]:=qrexpr1.Value.strResult; // написали ее заголовок
row:=row+1;// перевели строку.
Идем в полосу Detail  тут нам надо связать ячейки Excel  с полями таблицы БД отчета.
fe.EntryRC[row,1]:=tprizcex.AsString; // присваиваем значения ячейкам в стринг формате.
fe.EntryRC[row,2]:=tprizpriznak.AsString;
fe.EntryRC[row,3]:=tprizrazmer.AsString;
fe.EntryRC[row,4]:=tprizmodel.AsString;
fe.EntryRC[row,5]:=tprized.AsString;
fe.EntryRC[row,6]:=tprizispr.AsString;
fe.EntryRC[row,7]:=tprizneisp.AsString;
fe.SetSelection(row,1,row,7); // выделяем
fe.SetBorder(1,1,1,1,1,1,1,1,1,1,1);// чертим сетку
Идем в полосу GroupFooter пишем.
fe.SetSelection(row,1,row,7);// выделили
fe.SetBorder(2,0,0,0,0,1,1,1,1,1,1); //очертили рамку
fe.EntryRC[row,2]:=qrexpr8.Value.strResult;// присвоили
fe.EntryRC[row,6]:=qrexpr6.Value.strResult;
fe.EntryRC[row,7]:=qrexpr7.Value.strResult;
fe.SetSelection(row,6,row,7);// выдедлили результ ячейки
fe.SetBorder(2,1,1,1,1,1,1,1,1,1,1);// очертили их
row:=row+1;
qrexpr6.Reset;
qrexpr7.Reset;
Важно ! qrexpr.Value должно быть типа string. Если это число то в с-ве Expression напишите
(" "+формула) тогда значение станет стринг. Например " "+SUM(Tpriz.ISPR)
Теперь идем в Summary Там скажем мы можем писать исполнителя
row:=row+2;// отступ
fe.EntryRC[row,2]:=qrlabel5.caption;// qrlabel5-имя исполнителя.
Теперь сохраним отчет
var s :string;
begin
if vid="ot1" then s :=qrlabel2.Caption+".xls"; //  в зависимости от типа отчета имя его файла
if vid="ot2" then s :=qrlabel7.Caption+".xls";// qrlabel2 и 7 - заголовки отчетов
fe.Write("C:\Database\Otk\Save\"+s,4); // путь + тип файла тип должен быть 4 !
Заметте что загружали мы 2 тип а сохраняем в 4 так надо !
Тут рассмотренны основные положения перевода отчета в Excel. У самого F1BOOK гораздо больше возможностей которые позволяют быстро перенести отчет из Qrep в Excel. И даже значительно модернизировать его используя гибкость Excel. Также возможен перенос графиков.
" Using the Chart Wizard". И за малого места они не рассматриваются.
Преимущества :
1.Минимум кода мы просто связываем два компанента всю работу по формированию отчета берет на себя Qreport.
2.Высокая скорость и min ресурсов. Мы не запускаем приложение Excel !
3.Более высокая гибкость. Мы можем использовать функции и методы Excel не доступные в Qreport.
Недостатки .
1.Нам надо регестрировать ActiveX если отчеты генерятся на компе без Delphi. Но это в принципе давно известно как и очень легко.
2.Не сохраняются фиксация областей и заголовки страниц.
Полная справка  по F1Book "C:\Program Files\Borland\Delphi6\Ocx\Vci\Form1\VCF1.HLP"


 
Думкин ©   (2004-04-06 18:57) [1]

Думал я о статье на эту тему, понашкрябал тут. Посмотрел тексты Елмановой - почесал в затылке, засомневался.
Но увидев сие. Я понял - напрасно, вот он путь ДЗЭН. умолкаю.


 
Soft ©   (2004-04-06 19:11) [2]

>>Думкин ©   (06.04.04 18:57) [1]
>>Но увидев сие. Я понял - напрасно, вот он путь ДЗЭН. умолкаю.

Самое главное в программе - ее работоспособность. Пример MS Windows. Судя по всему Dmitriy O. © будет российским Билом Гейтсом:)


 
reticon ©   (2004-04-06 19:13) [3]


> Думкин ©   (06.04.04 18:57) [1]


:)))


 
Gero ©   (2004-04-06 22:32) [4]

> Судя по всему Dmitriy O. © будет российским Билом Гейтсом:)

А может, Dmitriy O. это и есть Билл? 8)


 
Dmitriy O. ©   (2004-04-07 07:27) [5]

А причем сдесь Билл ? Я просто привел новый способ формирования отчета в Excel. Без всяких заморочек с application. Я считаю данный способ даже очень не плохим. По крайне мере так я за пару дней (в месте с изучением F1BOOK) перебросил в Excel более 10 готовых отчетов в Qreport. И думаю (если не выявится скрытых недостатков) далее пользоваться таким методом. Ведь преимуществ больше чем недостатков. Во-первых большая скорость сотавления отчетов причем Excel не запускается значит допоп экономия времени и ресурсов. И потом вся работа по формированию отчетов проводится в Qreport. Поэтому не надо писать практически ни какого кода.


 
Труп Васи Доброго ©   (2004-04-07 09:15) [6]

А по моему XLReport проще, сделал в Екселе какую надо форму и всё, выводи данные, надо форму переделать - пожалуйста, причём не затрагивая код программы.


 
Dmitriy O. ©   (2004-04-07 09:32) [7]


> Труп Васи Доброго ©   (07.04.04 09:15)
Согласен проще когда изучишь и поработаешь несколько месяцев. Возможно когда я его изучу буду делать отчеты и там.
Но есть одно Но компонент всет платный и логотип фирмы производителя я так понял в демо не убирается. А это для отчетов введеных в СТП это недопустимо.


 
Dmitriy O. ©   (2004-04-07 09:37) [8]

И еще одна трабла После того как я установил это самый XLReport
У меня исчезла закладка компанентов "Server" где находились компаненты COM. Кто знает как ее восстановить ?


 
Danilka ©   (2004-04-07 11:43) [9]

[6] Труп Васи Доброго ©   (07.04.04 09:15)
> А по моему XLReport проще


Что-то он мне перестал нравиться. Поставит юзер антивирь - начинается долбежка разработчиков: отчеты не работают. Переставил офис - то-же проблемы. А какие офигенные тормоза при использовании в качестве шаблонов всяких стандартных форм, которые в "консультант+" лежат в экселе нарисованые - ужас просто.
Плюс еще сами ограничения наложеные разработчиками, например, съедание первой колонки многострочной части область (может уже исправили?).

Короче, на мой взгляд лучше воспользоваться Flexcel: версия 2.5.3 бесплатна и с исходниками, а умеет сама создавать отчеты на основе бланков, даже если экселя на компьютере и нет. К сожалению, более поздние версии платные, но и эта версия вполне рабочая.

[8] Dmitriy O. ©   (07.04.04 09:37)
> У меня исчезла закладка компанентов "Server"

У меня все ок, закладка на месте, Д5


 
blackman ©   (2004-04-07 12:28) [10]

А почему в Word не делаете ?
Мне кажется, что это проще и эффективнее.


 
Dmitriy O. ©   (2004-04-07 12:32) [11]


> blackman ©   (07.04.04 12:28)
Труднее Потом многие отчеты представленны именно в виде таблиц. А для таблиц Excel самое то.


 
blackman ©   (2004-04-07 13:40) [12]

>Потом многие отчеты представленны именно в виде таблиц
В Worde есть таблицы :), а средств оформления гораздо больше
Можно сделать список, письмо, календарь, все что угодно.
Я уж не говорю, о колонтитулах и разбивке страниц


 
Dmitriy O. ©   (2004-04-07 13:51) [13]

А формулы ? Иногда можно формировать отчел в Excel используя его вычислительные способности.


 
blackman ©   (2004-04-07 15:01) [14]

>А формулы ?
А кто мешает ? Вставляй


 
blackman ©   (2004-04-07 15:04) [15]

Вставка формулы
Укажите место для вставки формулы.
Выберите команду Объект в меню Вставка, а затем — вкладку Создание.
В списке Тип объекта выберите Microsoft Equation 3.0.
Нажмите кнопку OK.
Создайте формулу путем выбора символов на панели инструментов Формула и ввода переменных и чисел. Верхняя строка панели инструментов Формула содержит более 150 математических символов. Нижняя строка используется для выбора разнообразных шаблонов, предназначенных для построения дробей, интегралов, сумм и других сложных выражений.
Для получения справочных сведений выберите команду Вызов справки в меню Справка.

Чтобы вернуться в Word, щелкните документ Word. :)


 
Dmitriy O. ©   (2004-04-07 15:07) [16]


> blackman ©   (07.04.04 15:01)
Но главная причина не прияти Ворда кроется скорее всего в его незнании. Так если Excel я довольно хорошо знаю даже можно сказать очень хорошо. То к Ворду отношусь с опаской так как работаю там довольно редко. Поэтому предпочитаю юзать инструмент который мне ближе но это не означает что он лутше. Вот Qreport есть гораздо более лутшие инструменты для отчета но так как я его изучил довольно хорошо то на другие составители отчетов не перехожу.



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.058 c
1-1081868757
4kusNick
2004-04-13 19:05
2004.05.02
Открытие файлов из Проводника


3-1080775565
Angel_Forever
2004-04-01 03:26
2004.05.02
Подключение и взаимодействие с БД на сервере SQL-Server


3-1080822047
Yad
2004-04-01 16:20
2004.05.02
Агрегатные поля


1-1081762062
Bulgar
2004-04-12 13:27
2004.05.02
Создание компонента в Delphi 6


1-1081839242
Vani
2004-04-13 10:54
2004.05.02
Как передать параметр моему проекту в exe





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский