一个有关Excel的至今仍困扰我的老问题(80分)

  • 主题发起人 主题发起人 zf501
  • 开始时间 开始时间
Z

zf501

Unregistered / Unconfirmed
GUEST, unregistred user!
请大家看看下面的代码,是关于数据表中的内容存成Excel文件的。
可总是报错 "OLE Error 800A03EC"
我用了server面板中的三个控件ExcelApplication1,ExcelWorkbook1,
ExcelWorksheet1


ExcelApplication1.Connect;
ExcelApplication1.Visible[0]:=False;

ExcelApplication1.Workbooks.Add(NULL,0);
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets[1] as _WorkSheet);
//** Tab是一个Paradox表
Tab.First;
for i:=0 to Tab.RecordCount-1 do
begin
for j:=0 to Tab.FieldCount-1 do
ExcelWorksheet1.Cells.Item[i,j]:=Tab.Fields[j].AsString;
Tab.Next;
end;
//**保存的文件名
ExcelWorksheet1.SaveAs('C:/DDD/NewSQL/xxyy.xls');

ExcelApplication1.Disconnect;
ExcelApplication1.Quit;

另外我几乎看了所有的大富翁上有关键词'Excel'查出的贴子,似乎没有一个
不激活Excel而把数据表存成Xls文件的。
谁能给解决,不胜感激。
 
1.
//add
tab.disablecontorls;
Tab.First;
for i:=0 to Tab.RecordCount-1 do
begin
for j:=0 to Tab.FieldCount-1 do
///ExcelWorksheet1.Cells.Item[i,j]:=Tab.Fields[j].AsString;
ExcelWorksheet1.Cells.Item[i+1,j+1]:=Tab.Fields[j].AsString;
Tab.Next;
end;
tab.enablecontorls;
 
2.不启动EXCEL存成XLS文件的方法
1。使用F1BOOK1 存成EXCEL格式
2。使用XLSREADWRITE存成EXCEL格式
3。使用DEVEXPRESS GRID 3 或EHLIB 158 的EXPORT函数

 
用现有的其它控件作不到吗?
 
在<a href="http://www.delphibbs.com/delphibbs/DispQ.asp?LID=446727">http://www.delphibbs.com/delphibbs/DispQ.asp?LID=446727</a>中,
我想启动EXCEL都不行啊!!!
 
请继续或结束 请提问者20天内至少把自己的问题提前一次 否则你的问题被压在
最后是不会被注意的
 
你试以下代码.我测试通过.注意必须要把comobj.pas加入到uses中.

procedure TForm1.Button1Click(Sender: TObject);
const
xlNormal = -4143;
var
FExcel: Variant;
i, j: Integer;
Str: string;
begin
try
FExcel := CreateOleObject('Excel.Application');
FExcel.WorkBooks.Add;
except
Application.MessageBox('提示','联系EXCEL错误',mb_ok or mb_iconinformation);
Exit;
end;
TABLE1.First;
i := 1;
while not TABLE1.Eof do
begin
for j := 0 to table1.Fields.Count - 1 do
begin
Str := table1.FieldByName(table1.Fields[j].FieldName).DisplayText;//DisplayText自动处理了DisplayFormat
FExcel.Cells[i, j + 1] := Str;
end;
table1.Next;
Inc(i);
end;
try
FExcel.ActiveWorkbook.SaveAs('d:/aaa.xls', xlNormal, '', '', False, False);
except
FExcel.Quit;
end;
FExcel.Visible := true;
FExcel.Quit;
end.
 
多人接受答案了。
 
后退
顶部