我给你一段我的程序阿,是操纵excel的阿!! procedure TForm7.Button5Click(Sender: TObject); var Range:excelrange; i,j,k:integer; letter:char; begin if datasource1.DataSet=nil then showmessage('没有内容可以导入Excel!') else begin try try excelapplication1.Connect; except showmessage('您的机器没有安装Excel!'); abort; end; excelapplication1.Visible[0]:=true; excelapplication1.Caption:='送修内容'; excelapplication1.Workbooks.Add(NUll,0); k:=datasource1.DataSet.FieldCount-4; if datasource1.DataSet.Fields[k].DisplayLabel='COUNT OF 局名' then k:=4 else k:=0; i:=65+datasource1.DataSet.FieldCount-1-k; letter:=char(i); range:=excelapplication1.Range['A1',letter+'1']; for i:=0 to datasource1.DataSet.FieldCount-1-k do begin range.Value:=datasource1.DataSet.Fields[i].DisplayLabel; range:=range.Next; end; if k=4 then begin range.Value:='数量'; dec(k); end; datasource1.DataSet.First; for i:=1 to datasource1.DataSet.RecordCount do begin range:=excelapplication1.Range['A'+inttostr(i+1),letter+inttostr(i+1)]; for j:=0 to datasource1.DataSet.FieldCount-1-k do begin range.Value:=datasource1.DataSet.Fields[j].AsString ; range:=range.Next; end; datasource1.DataSet.Next; end; except excelapplication1.Disconnect; end; end; end;
然后就但操作一般的表一样啊!!
至于单个文件中单个表的导入,这个我觉得没有问题,请大家帮忙看一下上面复杂的问题。
x,sheet:variant;
str:string;
begin
try
x:=createoleobject('excel.application');
except
messagedlg('不能打开Mircrosoft Excel'+#13+'请检查是否已经安装 Mircrosoft Office!',mterror,[mbok],0);
abort;
end; x.workbooks.add('\平衡表.xls');
sheet:=x.workbooks[wbk].worksheets['平衡表']; sheet.cells[1,1]:='123'; //赋值
sheet.cells[1,2]:='456';
str=sheet.cells[1,2]; //exel的表取出来的数都是字符串类型的
sheet.saveas('平衡表.xls');
//显示excel
x.visible = true;
//关闭excel
x.quit;//例子
tpub.fieldbyname('123').asstring;=sheet.cells[i,j];
procedure TForm7.Button5Click(Sender: TObject);
var
Range:excelrange;
i,j,k:integer;
letter:char;
begin
if datasource1.DataSet=nil then showmessage('没有内容可以导入Excel!')
else begin
try
try
excelapplication1.Connect;
except
showmessage('您的机器没有安装Excel!');
abort;
end;
excelapplication1.Visible[0]:=true;
excelapplication1.Caption:='送修内容';
excelapplication1.Workbooks.Add(NUll,0); k:=datasource1.DataSet.FieldCount-4; if datasource1.DataSet.Fields[k].DisplayLabel='COUNT OF 局名' then
k:=4
else k:=0; i:=65+datasource1.DataSet.FieldCount-1-k;
letter:=char(i); range:=excelapplication1.Range['A1',letter+'1']; for i:=0 to datasource1.DataSet.FieldCount-1-k do
begin
range.Value:=datasource1.DataSet.Fields[i].DisplayLabel;
range:=range.Next;
end;
if k=4 then begin
range.Value:='数量';
dec(k);
end;
datasource1.DataSet.First; for i:=1 to datasource1.DataSet.RecordCount do begin
range:=excelapplication1.Range['A'+inttostr(i+1),letter+inttostr(i+1)];
for j:=0 to datasource1.DataSet.FieldCount-1-k do begin
range.Value:=datasource1.DataSet.Fields[j].AsString ;
range:=range.Next;
end;
datasource1.DataSet.Next;
end; except
excelapplication1.Disconnect;
end; end;
end;