用Delphi导出数据到Excel时报OLE error 800A03EC错误.
已导出的数据是260行,卡住!
请问是什么原因啊???
已导出的数据是260行,卡住!
请问是什么原因啊???
解决方案 »
- TStringList的DelimitedText属性遭遇空格的解决方案?
- 用DBGrid时,数据库表的字段是英文的,还很长,我想显示为对应的中文
- 请问TStatusPanelStyle = (psText, psOwnerDraw)中psOwnerDraw如何解释,我看了帮助但还是不太明白其含义.大家帮我解释下好吗?
- 请问如何在程序中将以逗号作分隔符的文本文件表数据导入到sql server中?
- 关于打开文件,如何指定程序打开指定文件
- dao问题dao问题dao问题dao问题
- 如何在运行阶段修改IntraWeb的窗口属性
- 一个关于ADO数据库的连接问题!!请知情者告之!!
- 有谁能告诉我ESocketError(10053)错误是怎么产生的?(想看详细内容,请进...)
- 陶杯(Delphi)有奖问答
- 求高手做一个到2012年6月78日的倒计时,可以放在空间里!
- reportMachine如何制作主从报表
and (not DM.QryCE_Exterior_Sample.Active) then
begin
Application.MessageBox('对不起,没有CE保留品数据可以导出!','提示',MB_OK+ MB_ICONEXCLAMATION);
Exit;
end; if Application.MessageBox('确认要导出CE保留品明细数据吗?','提示',MB_YESNO+mb_iconquestion)=IDNo then Exit;
try
ExcelApp:=CreateOleObject('Excel.Application');
except
Application.MessageBox('创建Excel文件时出现错误!','提示',MB_OK+ MB_ICONEXCLAMATION);
Exit;
end;
ExcelApp.Visible := True;
ExcelApp.Caption := '标题:CE检查保留品数据';
ExcelApp.WorkBooks.Add;
ExcelApp.WorkSheets[1].Activate;
ExcelApp.WorkSheets[1].name:='表名';
ExcelApp.ActiveSheet.Rows[1].Font.Bold:= True;
//to excel 导出数据
begin
with DM.QryCE_Reservations do
begin
DisableControls;
fieldNum := dbgrid9.fieldCount;
ExcelApp.Cells[1,1] :='CE保留品推移数据表';
FieldNum:=FieldNum;
for i:=1 to fieldNum do //写表头
begin
ExcelApp.Cells[2,i]:=FrmCE_Report.DBGrid9.Columns[i-1].Title.caption;
end;
first;
i:=2;
while not eof do
begin
for j:=1 to fieldNum do
begin
ExcelApp.Cells[line+1+i,j]:=fields[j-1].AsString;
end;
inc(i);
if (i mod 20)=0 then
ExcelApp.Cells[1,20].Activate;
next;
end;
line:=i+2;
end;
with DM.QryCE_Reservation do
begin
fieldNum := dbgrid7.fieldCount;
ExcelApp.Cells[1+line,1] :='CE保留品处理数据表';
FieldNum:=FieldNum;
for i:=1 to fieldNum do //写表头
begin
ExcelApp.Cells[line+2,i]:=FrmCE_Report.DBGrid7.Columns[i-1].Title.caption;
end;
first;
i:=2;
while not eof do
begin
for j:=1 to fieldNum do
begin
ExcelApp.Cells[line+i+1,j]:=fields[j-1].AsString;
end;
inc(i);
if (i mod 20)=0 then
ExcelApp.Cells[1,20].Activate;
next;
end;
line:=line+i+2;
end; with DM.QryCE_Reserve_Yield do
begin
fieldNum := dbgrid8.fieldCount;
ExcelApp.Cells[line+1,1] :='CE保留品月良率数据表';
FieldNum:=FieldNum;
for i:=1 to fieldNum do //写表头
begin
ExcelApp.Cells[line+2,i]:=FrmCE_Report.DBGrid8.Columns[i-1].Title.caption;
end;
first;
i:=2;
while not eof do
begin
for j:=1 to fieldNum do
begin
ExcelApp.Cells[line+i+1,j]:=fields[j-1].AsString;
end;
inc(i);
if (i mod line+20)=0 then
ExcelApp.Cells[1,i+20].Activate;
next;
end;
EnableControls;
end;
ExcelApp.Columns[1].NumberFormatLocal:='@';
Application.MessageBox('恭喜!' + #13#10#13#10 +
'数据成功导出,请注意数据备份。', '提示', MB_OK + MB_ICONINFORMATION +MB_DEFBUTTON2);
end;
由于没有判断列超出Z,导致出现 =SUM([3:]4)的公式,Z的ASC码值为90,[ 的asc码值为91
就会出现OLE error 800A03EC 的错误提示
估计此错误提示多数是对单元格赋值或赋表达式不正确导致的,或超出excel可识别值的范围 看看你的数据有没有什么不一样的
...
try
ExcelApp.Cells[2,i]:=FrmCE_Report.DBGrid9.Columns[i-1].Title.caption;
except
on Exception E do
begin
ShowMessage( E.Message );
end;
end;
......
try
ExcelApp.Cells[line+2,i]:=FrmCE_Report.DBGrid7.Columns[i-1].Title.caption;
except
on Exception E do
begin
ShowMessage( E.Message );
end;
end;
...
建议xml封包直接成excel 2007格式的,电脑不装office都压力不大。
行最多是65535
是ExcelApp.Cells[1,i+20].Activate;这句话错了
行列对调了