一个例子, 里面含有对 Word 操作的常用方法:定位替换、表格等。 procedure TForm1.Button1Click(Sender: TObject); var WordApp,MyDoc,wTable: OLEVariant; FileName: string; i: integer; procedure FillRow(wTable: OLEVariant; Row,StartColumn: Byte; ss: array of String); var j: word; begin for j := Low(ss) to High(ss) do begin wTable.Cell(Row,j+StartColumn).Range.Text := ss[j]; end; end; begin FileName := ExtractFileDir(Application.ExeName) + '\test1.dot'; if not FileExists(FileName) then raise Exception.Create('找不到模板!'); try WordApp := CreateOleObject('Word.Application'); MyDoc := CreateOleObject('Word.Document'); except Raise Exception.Create('无法打开Word,请确认已安装Word。'); end; WordApp.Visible := true; MyDoc := WordApp.Documents.Add(FileName,false); MyDoc.BookMarks.Item('表名1').Select; WordApp.Selection.Text := 'Animals'; wTable := MyDoc.Tables.Item(1); table1.First; for i := 2 to 4 do begin if not Table1.Eof then begin FillCell(i,1,wtable,'Name'); FillCell(i,2,wtable,'Size'); FillCell(i,3,wtable,'Area'); Table1.Next end else Break end; wTable := MyDoc.Tables.Item(2); table1.First; for i := 1 to 3 do if not table1.Eof then begin FillRow(wTable,i,2,[table1.fieldbyName('Name').AsString, table1.FieldByName('Size').AsString, table1.FieldByName('Area').AsString]); table1.Next end; MyDoc.Tables.Add(MyDoc.Books.Item('表格3').Range,2,5) end;procedure TForm1.FillCell(i, j: byte; wTable: Variant; FieldName: String); begin wTable.Cell(i,j).Range.Text := table1.FieldByName(FieldName).AsString end;
我控制EXECL 的实验代码,不知对你是否有用 procedure TForm1.startserver(Sender: TObject); var i,J,row,column:integer; begin Try ExcelApplication1.Connect; Except MessageDlg('Excel may not be installed', mtError, [mbOk], 0); Abort; End;// ExcelApplication1.Visible[0]:=True; ExcelApplication1.Caption:='Excel Application'; ExcelApplication1.Workbooks.Add(Null,0); ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]); ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet); row:=1; FOR j := 1 to 8 do begin column:=1; for i:=1 to 8 do begin ExcelWorksheet1.Cells.Item[row,column]:=j*10+i; column:=column+1; end; Row := Row+1; end;ExcelApplication1.Visible[0]:=True;{ Table1.Open; row:=1; While Not(Table1.Eof) do begin column:=1; for i:=1 to Table1.FieldCount do begin ExcelWorksheet1.Cells.Item[row,column]: =Table1.fields[i-1].AsString; column:=column+1; end; Table1.Next; row:=row+1; end; }end;procedure TForm1.fiel1Click(Sender: TObject); begin startserver(self); end;procedure TForm1.printout1Click(Sender: TObject); begin ExcelWorksheet1.PrintOut; end;procedure TForm1.previous1Click(Sender: TObject); begin ExcelWorksheet1.PrintPreview; end;procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin ExcelApplication1.Disconnect; ExcelApplication1.Quit; end;procedure TForm1.open1Click(Sender: TObject); begin if OpenDialog1.Execute then ExcelApplication1.Workbooks.Open(OpenDialog1.FileName,null,null,null,null,null,null,null,null,null,null,null,null,0); end;
里面含有对 Word 操作的常用方法:定位替换、表格等。
procedure TForm1.Button1Click(Sender: TObject);
var WordApp,MyDoc,wTable: OLEVariant;
FileName: string;
i: integer;
procedure FillRow(wTable: OLEVariant; Row,StartColumn: Byte; ss: array of String);
var j: word;
begin
for j := Low(ss) to High(ss) do begin
wTable.Cell(Row,j+StartColumn).Range.Text := ss[j];
end;
end;
begin
FileName := ExtractFileDir(Application.ExeName) + '\test1.dot';
if not FileExists(FileName) then
raise Exception.Create('找不到模板!');
try
WordApp := CreateOleObject('Word.Application');
MyDoc := CreateOleObject('Word.Document');
except
Raise Exception.Create('无法打开Word,请确认已安装Word。');
end; WordApp.Visible := true;
MyDoc := WordApp.Documents.Add(FileName,false); MyDoc.BookMarks.Item('表名1').Select;
WordApp.Selection.Text := 'Animals';
wTable := MyDoc.Tables.Item(1);
table1.First;
for i := 2 to 4 do begin
if not Table1.Eof then begin
FillCell(i,1,wtable,'Name');
FillCell(i,2,wtable,'Size');
FillCell(i,3,wtable,'Area');
Table1.Next
end else Break
end; wTable := MyDoc.Tables.Item(2);
table1.First;
for i := 1 to 3 do
if not table1.Eof then begin
FillRow(wTable,i,2,[table1.fieldbyName('Name').AsString,
table1.FieldByName('Size').AsString,
table1.FieldByName('Area').AsString]);
table1.Next
end; MyDoc.Tables.Add(MyDoc.Books.Item('表格3').Range,2,5)
end;procedure TForm1.FillCell(i, j: byte; wTable: Variant; FieldName: String);
begin
wTable.Cell(i,j).Range.Text := table1.FieldByName(FieldName).AsString
end;
var
itemindex :olevariant;
filename, confirmconversions, readonly, addtorecentfiles,
passworddocument, passwordtemplate, revert,
writepassworddocument, writepasswordtemplate, format: olevariant;
begin
//打开word
wordapplication1.Disconnect;
try
wordapplication1.connect;
except
messagedlg('word may not be installed', mterror, [mbok], 0);
abort;
end;
wordapplication1.visible := true;
//打开文件
filename := 'c:\test.doc';
confirmconversions := false;
readonly := false;
addtorecentfiles := false;
passworddocument := '';
passwordtemplate := '';
revert := true;
writepassworddocument := '';
writepasswordtemplate := '';
format := wdopenformatdocument;wordapplication1.documents.open( filename, confirmconversions,
readonly, addtorecentfiles, passworddocument, passwordtemplate,
revert, writepassworddocument, writepasswordtemplate, format );
end;
end.
procedure TForm1.startserver(Sender: TObject);
var
i,J,row,column:integer;
begin
Try
ExcelApplication1.Connect;
Except
MessageDlg('Excel may not be installed', mtError, [mbOk], 0);
Abort;
End;// ExcelApplication1.Visible[0]:=True; ExcelApplication1.Caption:='Excel Application';
ExcelApplication1.Workbooks.Add(Null,0);
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet); row:=1;
FOR j := 1 to 8 do
begin
column:=1;
for i:=1 to 8 do
begin
ExcelWorksheet1.Cells.Item[row,column]:=j*10+i;
column:=column+1;
end;
Row := Row+1;
end;ExcelApplication1.Visible[0]:=True;{
Table1.Open;
row:=1;
While Not(Table1.Eof) do
begin
column:=1;
for i:=1 to Table1.FieldCount do
begin
ExcelWorksheet1.Cells.Item[row,column]:
=Table1.fields[i-1].AsString;
column:=column+1;
end;
Table1.Next;
row:=row+1;
end;
}end;procedure TForm1.fiel1Click(Sender: TObject);
begin
startserver(self);
end;procedure TForm1.printout1Click(Sender: TObject);
begin
ExcelWorksheet1.PrintOut;
end;procedure TForm1.previous1Click(Sender: TObject);
begin
ExcelWorksheet1.PrintPreview;
end;procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
end;procedure TForm1.open1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
ExcelApplication1.Workbooks.Open(OpenDialog1.FileName,null,null,null,null,null,null,null,null,null,null,null,null,0);
end;