倾家荡产只求大虾解答,数据导出到EXCEL出错的奇怪现象(100分)

  • 主题发起人 主题发起人 卓越
  • 开始时间 开始时间

卓越

Unregistered / Unconfirmed
GUEST, unregistred user!
我的台式机和笔记本装的windows 2000+Delphi 7+Office 2000均来自相同的盗版光盘,
当然应用程序会有所不同。但在笔记本上运行到
try
exls:=createoleobject('Excel.application');
sheet:=createoleobject('excel.sheet');
except
application.MessageBox('请先安装MICROSOFT EXCEL!','提示',mb_ok+mb_iconinformation);
exit;
end;
中的exls:=createoleobject('Excel.application')这条语句时即出错提示“Project aa.exe raised exception class EOleSysError with message '不支持此接口',Process stopped,Use step or Run to continue”,而在台式机上运行却不会。为此我把office 2000重装,甚至把应用程序卸载光了还会出错。
各位兄台,小弟先谢了!
 
我是通过excel模板 做的! 这样做就没有 这个问题 。以前我也这样在bs模式下做过 老出问题 且速度慢?
======================================
我的做法如下
======================================
//------------------------------------------------------------------------------
procedure TF0301.BOutClick(Sender: TObject);
var
cFile: String;
SaveBK: TBookMark;
begin
if Fun.RStr(Trim(PDJComEdit1.Text), 1) = '/' then
cFile := Trim(PDJComEdit1.Text) + Trim(CEdit7.Text)
else
cFile := Trim(PDJComEdit1.Text) + '/' + Trim(CEdit7.Text);
if UpperCase(Fun.RStr(cFile, 4)) <> '.XLS' then
begin
ShowMessage('副档案名必须为"*.XLS"');
Exit;
end;
if CopyFile(PChar(scApPath + 'CardSmp.xls'), PChar(cFile), False) then
begin
XlsConn.ConnectionString := 'Provider=MSDASQL.1;Persist Security Info=False;' +
'Extended Properties="DSN=Excel Files;DBQ=' + cFile +
';DriverId=22;MaxBufferSize=2048;PageTimeout=5;"';
XlsConn.Open;
Xls.Open;
SaveBK := Rs.GetBookmark;
SRs.Enabled := False;
Rs.First;
BPrint.Enabled := False;
BOut.Enabled := False;
BQuery.Enabled := False;
Panel1.Enabled := False;
Panel2.Enabled := False;
while not Rs.Eofdo
begin
Xls.Append;
Dbu.DsSave(Xls, '刷卡日期', RsFDate.AsString , 'S');
Dbu.DsSave(Xls, '刷卡时间', RsFTime.AsString , 'S');
Dbu.DsSave(Xls, '员工卡号' , RsCardNo.AsString , 'S');
Dbu.DsSave(Xls, '员工工号' , RsEmpNo.AsString , 'S');
Dbu.DsSave(Xls, '员工姓名' , RsCName.AsString , 'S');
Dbu.DsSave(Xls, '部门' , RsDepName.AsString , 'S');
Dbu.DsSave(Xls, '刷卡钟编号' , RsCtrlNo.AsString , 'S');
Dbu.DsSave(Xls, '状态' , RsFStatus.AsString , 'S');
Xls.Post;
Rs.Next;
end;
Xls.Close;
XlsConn.Close;
SRs.Enabled := True;
Rs.GotoBookmark(SaveBK);
Panel1.Enabled := True;
Panel2.Enabled := True;
BPrint.Enabled := True;
BOut.Enabled := True;
BQuery.Enabled := True;
ShowMessage('输出完毕');
end;
end;
 
to webxiou
sorry,你能不能说得详细些,比如要加入什么控件之类,不然我测试不出结果
 
ADO.ConnectionString='Provider=OLEDB 4.0;Extended Properties=Excel 8.0;';
ADO.Execute('select * into [sheet1$] from TableName in ''''[Paradox 7.x;Database=C:/;Database Password=jIGGAe]');
 
程序创建时调用OleInitialize
程序退出前调用OleUninitialize
 
我的程序使用BDE,调用了OleInitialize,还是一样会,
况且我的电脑只要装上一个“ACDSEE 5.0 迷你中文版”的软件即会出错(上述提示),这时只好将系统修复一遍才好,谁帮帮我!
 
真的没人解答吗
 
杀毒,重装系统,
如你所述,这不是Delphi的问题, 是微软的操作系统病了
 
如果真是wdbpad所述,那可惨了!客户平常电脑用得都正常,总不能要安装我的软件就要重装系统吧
 
我的做法如下:要引用两个单元
var ExcelApp,MyWorkBook,mysheet:Variant;
i,j,m,n:integer;
begin
if messagedlg('?痷?璶锣ΘEXCELゅン盾?',mtinformation,[mbyes,mbno],1)=mrno then
exit;
try
ExcelApp:=CreateOleObject('Excel.Application');
MyWorkBook:=CreateOleobject('Excel.Sheet');
except
on Exceptiondo
raise exception.Create('礚猭ゴ秨Xlsゅン?叫谔﹚?竒?杆EXCEL?')
end;
 
其实这两个单元我也有引用
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
940
SUNSTONE的Delphi笔记
S
后退
顶部