Delphi Xe2环境下,使用Webbrowser装载Excel工作簿,Dao方式打开Access文件,将数据表写入指定Sheet,并保存或另存。以下为相关代码——
Uses Excel2010,Dao2010;前者控制Excel,后者控制Access
…
strDb-读取的数据库,strRs-读取的表名,strSheet-操作的Excel表名,intRow起始行数,intCol起始列数,strBook另存的工作簿名
procedure WriteSheet(MyWeb TWebBrowser; strDb String; strRs String; strSheet String; intRow Integer; intCol Integer; strBook String);
var
xlApp _application;
xlSheet _worksheet;
Eg DBEngine;
Db DataBase;
Rs Recordset;
i, j Integer;
begin
xlApp = Idispatch(MyWeb.OleObject.document.application) as _application;
xlSheet = xlApp.Sheets[strSheet] as _worksheet;
xlSheet.Activate(0);
Eg = CoDBEngine.Create;
Db = Eg.OpenDatabase(strDb, true, false, '');
Rs = Db.OpenRecordset(strRs, dbOpenTable, dbDenyRead, dbOpti
mistic);
for i = 1 to Rs.RecordCount do
begin
for j = 0 to Rs.Fields.Count - 1 do
begin
xlSheet.cells.item[i + intRow - 1, j + intCol].select;
xlSheet.cells.item[i + intRow - 1, j + intCol] = Rs.Fields[j].Value;
end;
if Rs.EOF = false then Rs.MoveNext;
end;
Rs.Close;
Db.Close;
if FileExists(strBook) then DeleteFile(strBook);
xlApp.ActiveWorkbook.SaveAs(strBook, xlOpenXMLWorkbook, '', '', false, false, xlNoChange, xlLocalSessionChanges, false, false, false, true, 0);另存Excel2007
工作簿
xlApp.ActiveWorkbook.Save(0);直接保存
end;
procedure TForm1.Button1Click(Sender TObject);
begin
WriteSheet(WebBrowser1, extractfilepath(application.ExeName) + 'data.mdb', 'Table1', 'Sheet1', 2, 3, extractfilepath(application.ExeName) + 'data1.xlsx');
end;
procedure TForm1.FormCreate(Sender TObject);
begin
WebBrowser1.Navigate(extractfilepath(application.ExeName) + 'data.xls');装载Excel2003工作簿
end;
end.