帮看看以下代码是哪儿出了问题? workbook:=createoleobject('execl.sheet'); 这句有错,SHEET不是用createoleobject创建的而是调用eclapp的方法,具体我不太记得了. 可到EXCEL里去查 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 workbook:=createoleobject('execl.sheet'); //没有这个对象 worksheet:= 这句错了worksheet应该有eclapp的属性得到,不是创建的 我参考他人的代码,运行通过: win2k+d5//部分数据导入Excel, intKindFlag = 数据类别procedure Tfrm_BillSQL.DataSetToExcel(intKindFlag: integer);Var vExcelApp,vWorkBook : variant; SaveDia : TSaveDialog; intRow,intCol,i : integer;begin intRow := 1; intCol := 1; i := 0; try // 创建ole对象 Excel Applocation 与 WorkBook vExcelApp := CreateOleObject('Excel.Application'); vWorkBook := CreateOleObject('Excel.Sheet'); except MessageBox(handle,'创建Ole错误,或者未安装 MicroSoft Excel ','错误',0); vExcelApp := Unassigned; vWorkBook := Unassigned; Exit; end; if (intKindFlag = 26) or (intKindFlag = 27) or (intKindFlag = 28) then begin try fcstatusbar1.Panels[0].Text := '正在进行数据导出'; vWorkBook := vExcelApp.workbooks.add; if NOT cdsSUMBillClass.IsEmpty then begin cdsSUMBillClass.DisableControls; for i := 0 to cdsSUMBillClass.FieldCount - 1 do begin vExcelApp.Cells[1,i+1] := string(cdsSUMBillClass.Fields[i].DisplayLabel); end; cdsSUMBillClass.First; while not cdsSUMBillClass.Eof do begin intRow := intRow + 1; intCol := 1; for i := 0 to cdsSUMBillClass.FieldCount - 1 do begin vExcelApp.Cells[intRow,intCol].NumberFormat := '@'; vExcelApp.Cells[intRow,intCol] := cdsSUMBillClass.Fields[i].asstring; intCol := intCol + 1; end; cdsSUMBillClass.Next; end; try SaveDia := TSaveDialog.Create(nil); SaveDia.Filter := 'MicroSoft Excel 文件¦*.xls'; if SaveDia.Execute = true then vWorkBook.SaveAs(FileName := SaveDia.FileName); finally if SaveDia <> nil then SaveDia.Free; vWorkBook.close; end; fcstatusbar1.Panels[0].Text := '数据导出结束'; end else begin fcstatusbar1.Panels[0].Text := '无数据导出'; end; except vWorkBook.close; vExcelApp.quit; vExcelApp := Unassigned; vWorkBook := Unassigned; fcstatusbar1.Panels[0].Text := '数据导出过程错误'; end; vWorkBook.close; vExcelApp.quit; vExcelApp := Unassigned; vWorkBook := Unassigned; cdsSUMBillClass.EnableControls; end;//数据导出 结束end; 你应该看看vba的帮助,vbaxl8.hlp(excel 97),2000为vbaxl9.hlp里面有详细的对象模型介绍 var eclapp, workbook: OleVariant; xlfilename: string;begin xlfilename := 'ex.xls'; try eclapp := CreateOleObject('excel.application'); workbook := eclapp.workbooks; except showmessage('你的机器未装excel!'); exit; end;end; tryeclapp:=createoleobject('excel.application');workbook:=createoleobject('execl.sheet');// ~~~excelexceptshowmessage('你的机器未装excel!');exit; Fastreprot显示Header问题 Dbexpress发布的时候遇到问题。请大虾们指点一下。 为什么会有这么奇怪的通信问题? TCP和UDP的取舍 我用ADO连的ACCESS,请问ADOQUERY的SQL语法是支持ACCESS能支持的.还是只支持DELPHI的LOCAL SQL? Delphi高级语言与汇编的结合 有那位高手能解决这个问题????? 怎样将运行时的一些资料写入exe文件? 怎样才能使Dbgrid中的记录不按照关键字重新排序?(不要闪动) 怎么样才知道记录被修改过?(关于 cachedupdates ) 求救!!!有分给哦!!!!! 工资系统原代码,给网址,必给分,
worksheet应该有eclapp的属性得到,不是创建的
//部分数据导入Excel, intKindFlag = 数据类别
procedure Tfrm_BillSQL.DataSetToExcel(intKindFlag: integer);
Var
vExcelApp,vWorkBook : variant;
SaveDia : TSaveDialog;
intRow,intCol,i : integer;
begin
intRow := 1;
intCol := 1;
i := 0;
try
// 创建ole对象 Excel Applocation 与 WorkBook
vExcelApp := CreateOleObject('Excel.Application');
vWorkBook := CreateOleObject('Excel.Sheet');
except
MessageBox(handle,'创建Ole错误,或者未安装 MicroSoft Excel ','错误',0);
vExcelApp := Unassigned;
vWorkBook := Unassigned;
Exit;
end;
if (intKindFlag = 26)
or (intKindFlag = 27)
or (intKindFlag = 28) then
begin
try
fcstatusbar1.Panels[0].Text :=
'正在进行数据导出';
vWorkBook := vExcelApp.workbooks.add;
if NOT cdsSUMBillClass.IsEmpty then
begin
cdsSUMBillClass.DisableControls;
for i := 0 to cdsSUMBillClass.FieldCount - 1 do
begin
vExcelApp.Cells[1,i+1] := string(cdsSUMBillClass.Fields[i].DisplayLabel);
end;
cdsSUMBillClass.First;
while not cdsSUMBillClass.Eof do
begin
intRow := intRow + 1;
intCol := 1;
for i := 0 to cdsSUMBillClass.FieldCount - 1 do
begin
vExcelApp.Cells[intRow,intCol].NumberFormat := '@';
vExcelApp.Cells[intRow,intCol] :=
cdsSUMBillClass.Fields[i].asstring;
intCol := intCol + 1;
end;
cdsSUMBillClass.Next;
end;
try
SaveDia := TSaveDialog.Create(nil);
SaveDia.Filter := 'MicroSoft Excel 文件¦*.xls';
if SaveDia.Execute = true then
vWorkBook.SaveAs(FileName := SaveDia.FileName);
finally
if SaveDia <> nil then
SaveDia.Free;
vWorkBook.close;
end;
fcstatusbar1.Panels[0].Text :=
'数据导出结束';
end
else
begin
fcstatusbar1.Panels[0].Text :=
'无数据导出';
end;
except
vWorkBook.close;
vExcelApp.quit;
vExcelApp := Unassigned;
vWorkBook := Unassigned;
fcstatusbar1.Panels[0].Text :=
'数据导出过程错误';
end;
vWorkBook.close;
vExcelApp.quit;
vExcelApp := Unassigned;
vWorkBook := Unassigned;
cdsSUMBillClass.EnableControls;
end;//数据导出 结束
end;
里面有详细的对象模型介绍
eclapp, workbook: OleVariant;
xlfilename: string;
begin
xlfilename := 'ex.xls';
try
eclapp := CreateOleObject('excel.application');
workbook := eclapp.workbooks;
except
showmessage('你的机器未装excel!');
exit;
end;
end;
eclapp:=createoleobject('excel.application');
workbook:=createoleobject('execl.sheet');
// ~~~excel
except
showmessage('你的机器未装excel!');
exit;