Eexcel问题(100分)

  • 主题发起人 主题发起人 hikehilter
  • 开始时间 开始时间
H

hikehilter

Unregistered / Unconfirmed
GUEST, unregistred user!
我用delphi 5.0通过com接口把数据库资料输入到Excel,但是感觉速度好慢啊!!有没有好的办法,使输入excel的数据更快一点,我想通过ado连接到excel文件,然后通过bathmove移到到excel文件,但是,苦于没有源码,不知那位大侠能提供一份,或者指点一二啊
 
第一点:
ado不支持batchmove
2:所以可以用
ado连接到excel然后用下面sql语句传过去。
前提是excel表要存在否则。要自己建表。
insert into excelTableName (Fieldname) select (SourceFieldName) from table2 in '+''''+'f:/sourceDatabase'+'''')
3.
可以用ExcelQueryTable速度很快
//DSN=budget 是在odbc中要提前设好连到你到数据源
function Tauditdata.ToExcelFile(var Filename:OleVariant;SheetName:OleVariant;WIndowCaption:OleVariant;SqlStr:String):Boolean;
var
NewTemplate,ItemIndex:olevariant;
CurSheet:_WorkSheet;
connectStr:olevariant;
begin
NewTemplate:=emptyParam;
try
try
ExcelApp.Connect;
except
MessageDlg('您可能没有安装EXCEL', mtError, [mbOk], 0);
Abort;
end;
ExcelApp.visible[0]:=TRUE;
ExcelApp.Caption:=WindowCaption;
ExcelApp.Workbooks.Add(Newtemplate,0);
ExcelBook.ConnectTo(ExcelApp.workBooks.Item[1]);
ExcelBook.Title[0]:=WIndowCaption;
ExcelBook.Activate;
CurSheet:=ExcelBook.Sheets[1] as _worksheet;
CurSheet.Name:=SheetName;
connectstr := 'ODBC;DSN=budget;';
CurSheet.QueryTables.Add(connectstr,CurSheet.range['a3','e3'],SqlStr);
ExcelQueryTable.ConnectTo(CurSheet.QueryTables.Item(1));
ExcelQueryTable.Refresh;
except
on E: Exception do
begin
ItemIndex:=FALSE;
ExcelBook.Close(ItemIndex);
ExcelApp.Disconnect;
ExcelApp.Quit;
Application.MessageBox('数据输出到EXCEL过程出错,请检查EXCEL版本是否一致','警告',mb_ok);
exit;
end;
end;
ExcelQueryTable.Disconnect;
ExcelBook.Disconnect;
ExcelApp.Disconnect;
Result:=TRUE;
end;
 
怎么连接到excel?
 
速度是比较慢,我用word也是一样,最好用类库来实现,少用variant
 
1.
Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=D:/Excel/a.xls;
Extended Properties=Excel 8.0;//此行自己加上
2.
adotable的tabledirect=true;
选择table1$即可操作.
 
to hikehilter:

你回答了我下面的问题!你触及了问题的实质!分你拿定了!但还有问题, 你回去看看吧,
因为你没有订阅邮件通知!


http://www.delphibbs.com/delphibbs/dispq.asp?LID=573519
600分!!!先出100分,解决问题后再加300分!加上小弟另外三个已自已解决问题的分数,共600分!食言是小狗!
 
多人接受答案了。
 
后退
顶部