3 / 3 / 0
Регистрация: 03.06.2011
Сообщений: 8
1

Создание отчета в *.odt

13.07.2011, 22:31. Показов 4196. Ответов 0
Метки нет (Все метки)

Скажу сразу, я программист не профессионал, скорее - любитель.
Пишу редко, по необходимости. Есть задача - нахожу решение, насколько оно правильное, не знаю, главное все работает. Это я написал, чтобы сильно не плевались, если кому не понравится - пишу для тех, кому может пригодится.
Итак, есть задача вывести в документ Опенофиса результат работы программы, т.е. отчет, в котором может быть как текст, так и таблицы StringGrid или DbGrid.
Читал на форумах разные решения. Скажу, что ответы находил, но для меня сложные и трудоемкие.
Для себя нашел решение такое. Чем и хочу поделиться.
В компоненте Memo формируем html документ со всеми делами. В разделе <body></body> вставляем заголовки с наших label-ов, Edit-ов, формируем таблицу и считываем туда данные с наших таблиц.
Когда html текст в Memo готов, сохраняем его в файл с расширением *.odt. И все.
Должно получится примерно такое:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
     Zag:='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">';
     Memo1.Lines.Add(Zag);
     Memo1.Lines.Add('<html>');
     Memo1.Lines.Add('<head>');
     Memo1.Lines.Add('<title>'+Label1.Caption+'</title>');
     Memo1.Lines.Add('<meta http-equiv="Content-Type" content="text/html; charset=utf-8">');
     Memo1.Lines.Add('</head>');
     Memo1.Lines.Add('<body>');
     Memo1.Lines.Add('<p><h2><em><div align="center">'+Label1.Caption+'<strong></strong></div></em></h2></p>');
     Memo1.Lines.Add('<TABLE width="100%" border="2"><TR>');
     for i:=0 to ColC-2 do
     begin
         q:=strGrOtchet.Columns.Items[i].Width*100 div strGrOtchet.Width;
         Memo1.Lines.Add('<TD align="center" width="'+IntToStr(q)+'%">'+strGrOtchet.Columns.Items[i].Title.Caption+'</TD>');
     end;
     Memo1.Lines.Add('</TR>');
     for j:=1 to RowC-1 do
     begin
         Memo1.Lines.Add('<TR>');
         for i:=1 to ColC-1 do
         begin
             q:=strGrOtchet.Columns.Items[i-1].Width*100 div strGrOtchet.Width;
             Memo1.Lines.Add('<TD align="right" width="'+IntToStr(q)+'%">'+strGrOtchet.Cells[i,j]+'</TD>');
         end;
         Memo1.Lines.Add('</TR>');
     end;
     Memo1.Lines.Add('</body>');
     Memo1.Lines.Add('</html>');
Это простой отчет и для примера сгодится. Опенофис его открывает и все там красиво.
Не знаю кому как, а для меня этот вариант вполне приемлемый.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
2
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.07.2011, 22:31
Ответы с готовыми решениями:

Создание файлов формата ODT
Подскажите библиотеку для работы с odt фалами(создание и заполнение) . В интернете нашел много...

Создание отчета
Здравствуйте ув. Форумчани. Пишу курсовую, потому прошу несильно ругать за плохо сделанную базу....

Создание отчета
Доброго времени суток. Для создания отчетов использую FastReport 6. В редакторе отчета почему-то не...

Создание отчета
Нужно вывести инфу о прибыли в определенный период времени. Проблема в том, что вроде и сделал все...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.07.2011, 22:31
Помогаю со студенческими работами здесь

Создание отчета из бд
Есть вот такая вот база данных: Подскажите как сделать вывод в форме отчетности все заказы,а...

Создание отчета
Господа профессионалы! Оч прошу подсказать решение моей проблемы с составлением отчета в access! В...

Создание Отчета
Народ помогите с созданием отчёта, такая задача нужно сделать отчет, в виде таблицы приход, расход...

Создание отчета
Как создать отчет, вообщем на форме есть dbgrid, combobox, в combobox выбираешь таблицу, и она...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru