XLSReadWrite导出Excel报错,在线等,急

billmo1986 2008-10-10 11:02:27
procedure ExportExcelQuick(ClientDataSet:TClientDataSet);
var
Error,site:integer;
SaveDialogReport:TSaveDialog;
XLSDbRead: TXLSDbRead2;
XLS: TXLSReadWriteII2;
num:integer;
ExportFileName: String;
begin
Error := 0;

if (ClientDataSet.Active) and (ClientDataSet.RecordCount>0) then
begin

SaveDialogReport:=TSaveDialog.Create(nil);
SaveDialogReport.Options := [ofAllowMultiSelect, ofFileMustExist];
SaveDialogReport.Filter := 'Execle files (*.xls)|*.xls';
SaveDialogReport.FilterIndex := 1; { start the dialog showing all files }

if SaveDialogReport.Execute then
begin


if ClientDataSet.RecordCount>0 then
begin

XLS:=TXLSReadWriteII2.Create(nil);
showmessage('XLS Create');
XLSDBRead:=TXLSDbRead2.Create(nil);
showmessage('XLSDBRead');
ExportFileName := SaveDialogReport.FileName;
site := 0;

while (site <length(ExportFileName)+4) do
begin
if site<>pos('.xls',ExportFileName) then
begin

site:=pos('.xls',ExportFileName);
delete(ExportFileName,site,4);
end
else
site:=length(ExportFileName)+4;
end;
showmessage(ExportFileName);
XLS.Filename := ExportFileName+'.xls';

try
try
XLSDBRead.XLS := XLS;
XLSDbRead.Dataset := ClientDataSet;
showmessage('XLSDbRead.Dataset := ClientDataSet');
XLSDbRead.Read;
showmessage('XLSDbRead.Read');
XLS.Write;
showmessage('XLS.Write');

except
on E: Exception do
begin
Error := 1;

MessageDlg(inttostr(num),mtInformation, [mbOK], 0);
MessageDlg(e.Message,mtInformation, [mbOK], 0);

MessageDlg('导出失败。请重试!', mtInformation, [mbOK], 0);
end;
end
finally
SaveDialogReport.Free;
XLS.Free;
XLSDBRead.Free;
end;
if Error =0 then
MessageDlg('导出成功!', mtInformation, [mbOK], 0);
end;
end;
end
else
begin
MessageDlg('没有内容需要导出,请重新查询!', mtInformation, [mbOK], 0);
end;
end;


这段程序使用XLSReadWriteII实现cxgrid导出到Excel
在执行这段程序的时候XLS:=TXLSReadWriteII2.Create(nil);这句和XLSDbRead.Read;这两句不定期的报错
XLS:=TXLSReadWriteII2.Create(nil);这句报错时就是死在了这里,程序自动退出
XLSDbRead.Read;这句就是捕获到异常后,报内存错误

请大家看看问题出在哪里啊?


...全文
241 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
亮剑_ 2008-10-14
  • 打赏
  • 举报
回复
没有试过“XLSReadwriteII ”组件,如果没有特别的要求,可以直接通过OLE接口来写入Excel文件
如:
CreateOleObject('Excel.Application')创建一个OLE对象,经由操作Workbooks[1].Worksheets[1]来写入
billmo1986 2008-10-13
  • 打赏
  • 举报
回复
现在下载了XLSReadwriteII 4
没有这些问题了
但又设计到注册的问题啊!
有人有破解或者源码版么?
billmo1986 2008-10-13
  • 打赏
  • 举报
回复
没有人回啊!
啊~····
fangsp 2008-10-10
  • 打赏
  • 举报
回复
帮顶一个

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧