Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
Внизdelphi и Word Найти похожие ветки
← →
Homa_Programer © (2004-09-22 23:58) [0]Народ , помогите как создавать отчеты в Ворде?
Помогите чем можите, хоть глупостями, ведь они тоже бывают умными...
← →
GanibalLector © (2004-09-23 00:03) [1]Не понял.Т.е. есть некий набор данных в Delphi,а тебе его нужно в Word??? И еще,как вставлять закладками или все разом???
← →
jack128 © (2004-09-23 00:32) [2]Homa_Programer © (22.09.04 23:58)
Обычно отчет делают по шаблону.
Шаблон - это обычный документ Ворд, но нужных местах в этом домументе вписаны ключевые слова. При создании отчета ты ищешь эти ключевые слова и заменяешь их на свои данные.
← →
Homa_Programer © (2004-09-23 01:04) [3]все разом вставлять... и вообще если естькакая инфа по этой теме киньте на почту... я тока начал осваивать Ворд через делфу...даже можно сказать еще не начал... так что я не совсем понимаю ваши вопросы...
Если по шаболну то как? и Если без шаблона тоже КАК?
а на 1-й вопрос : скорее всего разом.
← →
GanibalLector © (2004-09-23 01:49) [4]Выбирай:
unit WordClipUnit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, StdCtrls;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
function GetGridClipText(Grid: TStringGrid): string;
var Str: string;
x, y: integer;
StartHTML,
EndHTML,
StartFragment,
EndFragment: integer;
const Line01 = "Version:1.0"#13#10;
Line02 = "StartHTML:000000000"#13#10;
Line03 = "EndHTML:000000000"#13#10;
Line04 = "StartFragment:000000000"#13#10;
Line05 = "EndFragment:000000000"#13#10;
Line06 = "StartSelection:000000000"#13#10;
Line07 = "EndSelection:000000000"#13#10;
Line08 = "Source: by Dec`s procedure"#13#10;
Line09 = "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">"#13#10;
Line10 = "<HTML><HEAD></HEAD>"#13#10;
Line11 = "<BODY>"#13#10;
Line12 = "<TABLE border=1><!--StartFragment-->"#13#10;
Line13 = "<TBODY>"#13#10;
Line14 = "</TBODY><!--EndFragment--><!--EndFragment-->"#13#10;
Line15 = "<!--EndFragment--></TABLE>"#13#10;
Line16 = "</BODY>"#13#10;
Line17 = "</HTML>"#13#10;
Offset1 = Length(Line01 + Line02) -2;
Offset2 = Length(Line01 + Line02 + Line03) -2;
Offset3 = Length(Line01 + Line02 + Line03 + Line04) -2;
Offset4 = Length(Line01 + Line02 + Line03 + Line04 + Line05) -2;
Offset5 = Length(Line01 + Line02 + Line03 + Line04 + Line05 + Line06) -2;
Offset6 = Length(Line01 + Line02 + Line03 + Line04 + Line05 + Line06 + Line07) -2;
procedure FillStringWithNum(var Str: string; Offset: integer; Num: integer);
var i: integer;
begin
while Num > 0 do begin
i := Num Mod 10;
Str[Offset] := Chr(Ord("0") + i);
dec(Offset);
Num := Num div 10;
end;
end;
begin
Str := Line01 + Line02 + Line03 + Line04 + Line05 +
Line06 + Line07 + Line08 + Line09;
StartHTML := Length(Str);
Str := Str + Line10 + Line11 + Line12;
StartFragment := Length(Str);
Str := Str + Line13;
with Grid do begin
for y := 0 to RowCount - 1 do
begin
str := str + "<TR>"#13#10;
for x := 0 to ColCount - 1 do
begin
str := str + "<TD>" + Cells[x, y] + "</TD>";
end;
str := str + #13#10"</TR>"#13#10;
end;
end;
Str := Str + Line14;
EndFragment := Length(Str);
Str := Str + Line15 + Line16 + Line17;
EndHTML := Length(Str);
FillStringWithNum(Str, Offset1, StartHTML);
FillStringWithNum(Str, Offset2, EndHTML);
FillStringWithNum(Str, Offset3, StartFragment);
FillStringWithNum(Str, Offset4, EndFragment);
FillStringWithNum(Str, Offset5, StartFragment);
FillStringWithNum(Str, Offset6, EndFragment);
result := str;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Options := StringGrid1.Options + [goEditing]
end;
procedure TForm1.Button1Click(Sender: TObject);
var str: string;
hData: HGlobal;
pData: pointer;
Len: LongInt;
zzz: integer;
begin
zzz := 52863;;
OpenClipboard(Application.Handle);
str := GetGridClipText(StringGrid1);
Len:=length(str);
hData:=GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE, Len);
pData:=GlobalLock(hData);
Move(PChar(str)^, pData^, Len);
EmptyClipboard;
SetClipboardData(zzz,hData);
GlobalUnlock(hData);
CloseClipboard;
end;
end.
или
procedure TForm1.Button1Click(Sender: TObject);
var App, Rgn : variant;
i, j: integer;
str: string;
const Sep = "#"; //любой символ
begin
App:= CreateOleObject("Word.Application");
App.Visible := true;
App.Documents.Add;
Rgn := App.Selection.Range;
Rgn.Collapse(0);
for i := 0 to StringGrid1.RowCount - 1 do
begin
str := "";
for j := 0 to StringGrid1.ColCount - 2 do
str := str + StringGrid1.Cells[j, i] + Sep;
str := str + StringGrid1.Cells[StringGrid1.ColCount - 1, i];
Rgn.InsertAfter(str);
Rgn.InsertParagraphAfter;
end;
Rgn.ConvertToTable(Sep);
App := null;
end;
← →
jack128 © (2004-09-23 01:51) [5]Homa_Programer © (23.09.04 1:04) [3]
а на 1-й вопрос : скорее всего разом.
Всгда лудше разом. Ибо это быстрее.
Вообще о взаимодествии ворда почитай на Королевстве Дельфи, там кажется были статейки про это.. Да и вообще Яндекс в зубы и вперёд - если не лесть в дебри, то тема достаточно простая..
← →
YurikGL © (2004-09-23 08:52) [6]http://www.delphimaster.ru/cgi-bin/anketa.pl?id=1084962208
← →
muzik (2004-09-24 10:10) [7]мдя..чота я не вижу тут даже близко ответа по теме
← →
TUser © (2004-09-24 10:12) [8]Есть статьи на Королевстве Делфи.
← →
Homa_Programer © (2004-09-28 22:55) [9]благодарю всех за помощь)))
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.038 c