//......向Word的活动文档中插入一表格,填入ATable中的数据......//procedure TForm1.inserttable(AWordApp:olevariant;ATable:TTable); var AWordDocument,mytable,Insertpoint,ARange:olevariant; i,j:byte; clip:tclipboard; AImage:Timage; iconindex,link,placement,displayasicon,datatype,iconfilename,iconlabel:olevariant; begin timer1.enabled:=false; if AWordApp.documents.count>0 then AWordDocument:=awordapp.activedocument else AwordDocument:=awordapp.documents.add; ARange:=AWordApp.application.selection.range; ARange.insertBefore(ATable.tablename); ARange.end:=ARange.end+10; ARange.font.size:=16; Insertpoint:=Awordapp.selection.end+length(atable.tablename); Atable.close; Atable.open; mytable:=AWordDocument.Tables.Add(AWordDocument.range(insertpoint,insertpoint), ATable.recordcount+1,ATable.Fields.count); //新表格 iconindex:=1; link:=false; placement:=wdInLine; displayasicon:=false; datatype:=wdPasteDeviceIndependentBitmap; iconfilename:=''; iconlabel:=''; clip:=tclipboard.create; for i:=1 to ATable.fields.count do begin mytable.cell(1,i).range.text:=ATable.Fields[i-1].fieldname; mytable.cell(1,i).range.font.size:=14; mytable.cell(1,i).range.font.bold:=true; end; for i:=1 to ATable.recordcount do begin for j:=1 to ATable.fields.count do if not ATable.Fields[j-1].isblob then begin mytable.cell(i+1,j).range.text:=ATable.fields[j-1].AsString; mytable.cell(i+1,j).range.font.size:=12; end else if (tblobfield(ATable.Fields[j-1]).blobtype=ftGraphic) or (tblobfield(ATable.Fields[j-1]).blobtype=fttypedbinary) then begin Aimage:=timage.create(self); Aimage.picture.bitmap.assign(ATable.FieldByName('BMP')); Aimage.autosize:=true; clip.Assign(Aimage.picture); //把图形拷入剪贴板 Aimage.free; Mytable.cell(i+1,j).range.PasteSpecial(iconindex,link,placement, displayasicon,datatype,iconfilename,iconlabel); //选择性粘贴 end else if tblobfield(ATable.Fields[j-1]).blobtype=ftMemo then begin end; ATable.Next; end; clip.free; end;
var
AWordDocument,mytable,Insertpoint,ARange:olevariant;
i,j:byte;
clip:tclipboard;
AImage:Timage;
iconindex,link,placement,displayasicon,datatype,iconfilename,iconlabel:olevariant;
begin
timer1.enabled:=false;
if AWordApp.documents.count>0 then
AWordDocument:=awordapp.activedocument
else
AwordDocument:=awordapp.documents.add; ARange:=AWordApp.application.selection.range;
ARange.insertBefore(ATable.tablename);
ARange.end:=ARange.end+10;
ARange.font.size:=16; Insertpoint:=Awordapp.selection.end+length(atable.tablename); Atable.close;
Atable.open;
mytable:=AWordDocument.Tables.Add(AWordDocument.range(insertpoint,insertpoint),
ATable.recordcount+1,ATable.Fields.count); //新表格
iconindex:=1;
link:=false;
placement:=wdInLine;
displayasicon:=false;
datatype:=wdPasteDeviceIndependentBitmap;
iconfilename:='';
iconlabel:=''; clip:=tclipboard.create; for i:=1 to ATable.fields.count do
begin
mytable.cell(1,i).range.text:=ATable.Fields[i-1].fieldname;
mytable.cell(1,i).range.font.size:=14;
mytable.cell(1,i).range.font.bold:=true;
end; for i:=1 to ATable.recordcount do
begin
for j:=1 to ATable.fields.count do
if not ATable.Fields[j-1].isblob then
begin
mytable.cell(i+1,j).range.text:=ATable.fields[j-1].AsString;
mytable.cell(i+1,j).range.font.size:=12;
end
else if (tblobfield(ATable.Fields[j-1]).blobtype=ftGraphic)
or (tblobfield(ATable.Fields[j-1]).blobtype=fttypedbinary) then
begin
Aimage:=timage.create(self);
Aimage.picture.bitmap.assign(ATable.FieldByName('BMP'));
Aimage.autosize:=true;
clip.Assign(Aimage.picture); //把图形拷入剪贴板
Aimage.free;
Mytable.cell(i+1,j).range.PasteSpecial(iconindex,link,placement,
displayasicon,datatype,iconfilename,iconlabel); //选择性粘贴
end
else if tblobfield(ATable.Fields[j-1]).blobtype=ftMemo then
begin
end;
ATable.Next;
end;
clip.free;
end;