delphi中dbgrid导出到excel中发生错误"无效的类别字符串"
环境是windowsxp+excel2007,代码如下:
function DBGridToExcel(Grid:TDBGrid; SavefileName:string): Boolean;
var
ExcelApp:Variant;
i,j,x:Integer;
begin
result:=false;
ExcelApp:=CreateOleObject('Excel.Application');//出错的地方!!!
ExcelApp.Visible:=True;
//ExcelApp.Caption:=Caption;
ExcelApp.WorkBooks.Add;
(*导出标题*)
i:=0;
for j:=0 to Grid.FieldCount-1 do
begin
if Grid.Columns[j].Visible=true then
begin
ExcelApp.Cells[1,i+1].Value:=
trim(Grid.Columns.Items[j].Title.Caption);
i:=i+1;
end;
end;
(*导出数据*)
Grid.DataSource.DataSet.First;
x:=2;
while not Grid.DataSource.DataSet.Eof do
begin
i:=0;
for j:=0 to Grid.FieldCount-1 do
begin
{设置单元格属性为“文本”}
if Grid.Columns[j].Visible=true then
begin
ExcelApp.Cells[x,i+1].NumberFormatLocal:='@';
ExcelApp.Cells[x,i+1]:=Trim(Grid.Columns.Items[j].Field.AsString);
i:=i+1;
end;
end;
inc(X);
Grid.DataSource.DataSet.Next;
end;
{导出的数据存为对应路径的文件}
ExcelApp.ActiveWorkbook.SaveAs(SavefileName);
// ExcelApp.Quit;
result:=true;
end;
在调用CreateOleObject时就出现了"无效的类别字符串"的错误。
当用其他电脑装的是windowsxp+office2003却是可以导出数据的,求帮助。
------解决方案-------------------- ExcelApp:=CreateOleObject('Excel.Application');//出错的地方!!!
这样写法有缺陷了,如果用户端有安装Excel的话就不用创建了,直接引用即可,否则才须创建的
多加一判断就行,用错误捕捉也行
------解决方案--------------------这个应该是安装了那种精简版(第三方重新打包,缺少相应的注册表信息)的office,造成的,重新安装完整版的office就可以了