关于在delphi中创建excel调用的问题(100分)

  • 主题发起人 主题发起人 chivas
  • 开始时间 开始时间
C

chivas

Unregistered / Unconfirmed
GUEST, unregistred user!
我在delphi程序中调用程序所在目录的一个xls文件,如:
someworkbook:=excelapp.workbooks.open('a.xls')
系统给出错信息,找不到文件,怎么办?[]
 
正确的用法是这样的。
var fname:WideString;
begin
ExcelApplication1.Connect;
ExcelApplication1.Visible[0]:=True;
fname:='c:/1.xls';
ExcelApplication1.Workbooks.Open(fname,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);
end;
 
我把上面代码转到BCB下执行怎么会出错?
代码如下:
{
ExcelApplication1->Connect();
ExcelApplication1->Visible[0]=true;
ExcelApplication1->Workbooks->Open("c://11.xls",EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);
}
错误提示为:
[C++ Error] PACK.cpp(262): E2285 Could not find a match for 'Workbooks::Open(WideString,OleVariant,OleVariant,OleVariant,OleVariant,OleVariant,OleVariant,OleVariant,OleVariant,OleVariant,OleVariant,OleVariant,OleVariant,int)'
是怎么会事儿?
请教!!![?]
 
关于EXCEL,请看看这些贴,足够你弄懂了.
759711,743162,734554,617213,691080,707641,701040.
 
function Tfrm_main.Openexcel: Boolean;
var
Curexcel: string;
begin
Curexcel := GetRegString(HKEY_CLASSES_ROOT, '/excel.Application/CurVer', '', '');
if Curexcel = '' then
begin
Application.MessageBox('请先安装 excel 97 或 excel 2000!或 excel XP',
PChar(self.Caption), MB_OK + MB_ICONSTOP);
Result := False;
Exit;
end;

if (Curexcel <> 'excel.Application.8') and (Curexcel <> 'excel.Application.9') then
begin
{
Curexcel := GetRegString(HKEY_CLASSES_ROOT, '/excel.Application.8', '', '');
if Curexcel = '' then
begin
Curexcel := GetRegString(HKEY_CLASSES_ROOT, '/excel.Application.9', '', '');
if Curexcel <> '' then
Curexcel := 'excel.Application.9';
end
else
begin
Curexcel := 'excel.Application.8';
end;
}
Curexcel := GetRegString(HKEY_CLASSES_ROOT, '/excel.Application.10', '', '');
if Curexcel <> '' then
Curexcel := 'excel.Application.10';
if Curexcel = '' then
begin
Application.MessageBox('无法运行 excel 97 或 excel 2000,' + #13#10
+ '请检查 excel 97 或 excel 2000 是否已经正确安装。',
PChar(self.Caption), MB_OK + MB_ICONSTOP);
Result := False;
Exit;
end;
end;

try
Fexcel := CreateOleObject(Curexcel);
if VarIsEmpty(Fexcel) then
begin
Application.MessageBox('无法运行 excel 97 或 excel 2000,' + #13#10
+ '请检查 excel 97 或 excel 2000 是否已经正确安装。',
PChar(self.Caption), MB_OK + MB_ICONSTOP);
Result := False;
Exit;
end;

except
Application.MessageBox('无法运行 excel 97 或 excel 2000,' + #13#10
+ '请检查 excel 97 或 excel 2000 是否已经正确安装。',
PChar(self.Caption), MB_OK + MB_ICONSTOP);
Result := False;
Exit;
end;

try
begin
Fexcel.DisplayAlerts := False;
Fexcel.workbooks.Open(ExtractFilePath(Application.EXEName)+'Chinese Turnover Tax Macro Model (On 1997 Data).xls');
Fexcel.caption:='中国流转税宏观模型';
Fexcel.Visible := True;
Result := True;
end;
except
Application.MessageBox('分析失败,',
PChar(self.Caption), MB_OK + MB_ICONSTOP);
Result := False;
end;
end;
 
多人接受答案了。
 
????????????
 
后退
顶部