如何将查询的数据表转换为Excel,如何使用F1Book转换,请递一个中文版F1Book控件。(100分)

  • 主题发起人 主题发起人 斗士
  • 开始时间 开始时间
利用控件或使用F1book,其实F1book的使用和stringgrid一样,你自己琢磨把,
 
还是这样吧,直接导入excel
begin
app:=createoleobject('excel.application');
work:=createoleobject('excel.sheet');
try
work:=app.workbooks.open('d:/xxx.xls');
query.first;
while not query.eof do
begin
app.sheets[1].cells[x,y]:=你的结果
query.next;
end;
finally
app.quit;
app:=unasigned;
end;
end;

如果是delphi5就更好了,方法类似
begin
excelapplication1.connect;
excelapplication1.works.add(null,0);
excelworkbook1.connectto(excelapplication1.workbooks[1]);
excelworksheet1.connectto(excelworkbook1.sheets[1] as _worksheet;
excelworksheet1.cells.item[x,y]:=xxxx;
end;
其他的就自己编吧
 
非常感谢Tyrael,也谢谢hua8hua的提示。
想请教Tyrael,以下代码通过,给点解释:
Excelapplication1.connect;
Excelapplication1.Workbooks.Add(null,0); //能否解释?
Excelworkbook1.connectto(excelapplication1.workbooks[1]);
Excelworksheet1.connectto(excelworkbook1.sheets[1] as _worksheet);
FieldCounts:=DBGrid1.FieldCount;
//记录数据表字段名
For j:=0 to FieldCounts-1 do
Excelworksheet1.Cells.Item[1,j+1]:=
DBGrid1.Fields[j].FieldName;
//记录数据表数据
i:=2;
Query1.First;
While not Query1.Eof do
Begin
For j:=0 to FieldCounts-1 do
Excelworksheet1.Cells.Item[i,j+1]:=Query1.Fields[j].Value;
i:=i+1;
Query1.Next;
End;
Excelworksheet1.SaveAs(Filename_Label.Caption);
Output_Btn.Enabled:=False;
Query1.First;

//如何及时关闭?
Excelworkbook1.Close;
ExcelApplication1.Quit;

另:用此法对记录较多的表操作较慢,不知有何法提速?
 
F1book还不太会用?
 
Excelapplication1.Workbooks.Add(null,0); //在excel中新增加一个workbook
关闭
excelapplication1.disconnect;
excelapplication1.quit;

另外,ole技术本身很慢,只能使自己的算法尽量好,没别的方法了
 
后退
顶部