excel + ado |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
procedure DataSetToXls(ds:TDataSet;sfilename:String);
var
ex:TMyExcel;
adods:TADOQuery;
i:integer;
begin
// create Excel File
ex:=TMyExcel.Create(nil,False);
try
for i:=0 to ds.fieldcount - 1 do
if copy(ds.fields[i].FieldName,1,4)<>'EXC_' then
ex.PutStr(1,i 1,'''' ds.fields[i].DisplayName);
ex.SaveAs(sFileName);
ex.Close('');
finally
ex.free;
end;
// open The .xls as ADO DataSet
adods:=OpenXlsAsADO(nil,sFileName);
try
while not ds.Eof do begin
adods.append;
for i:=0 to ds.fieldcount - 1 do
if copy(ds.fields[i].FieldName,1,4)<>'EXC_' then
adods.Fields[i].AsString:=ds.fields[i].AsString;
adods.post;
ds.next;
end;
finally
adods.free;
end;
end;
function OpenXlsAsADO(owner:TComponent;fname:string;sheetname:string='sheet1'):TAdoQUery;
var s,sht:string;
begin
Result:=TAdoQuery.Create(owner);
try
s:=AnsiReplaceStr(AdoConnectStr, 'xxx.xls', fname);
Result.ConnectionString:=s;
sht:='[' SheetName '$' ']';
Result.sql.text:='select * from ' sht;
Result.open;
except
result.Free;
end;
end; initialization
AdoConnectstr:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;'
'Data Source=xxx.xls;'
'Mode=Share Deny None;Extended Properties=Excel 8.0;'
'Persist Security Info=False;Jet OLEDB:System database="";'
'Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";'
'Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;'
'Jet OLEDB:Global Partial Bulk Ops=2;'
'Jet OLEDB:Global Bulk Transactions=1;'
'Jet OLEDB:New Database Password="";'
'Jet OLEDB:Create System Database=False;'
'Jet OLEDB:Encrypt Database=False;'
'Jet OLEDB:Don''t Copy Locale on Compact=False;'
'Jet OLEDB:Compact Without Replica Repair=False;'
'Jet OLEDB:SFP=False'; ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |