Delphi與Excel (轉)

amyz發表於2007-08-15
Delphi與Excel (轉)[@more@]

uses comobj,97,;

//從Excel寫資料到Access庫
prodedure ExcelToM(EXLfile:string;);
var
  sheet,XLApp,workbook : variant;
  iRow,MaxRow:integer;
begin
  screen.Cursor:=crHourGlass; 
  try
  //建立
  XLApp:=createOle('Excel.Application');
  XLApp.displayAlerts:=false;
  XLApp.ScreenUpdating:=false;
  XLApp.WorkBooks.Add(EXLfile);
  workbook := XLApp.workbooks[1];
  sheet:=workbook.worksheets[1];
  //sheet:=XLApp.WorkBooks[1].worksheets[1];
 
 
  //取得最大行數  maxRow
  XLApp.ActiveCell.SpecialCells(xlLastCell).;
  maxRow:=XLApp.ActiveCell.Row;  //最大行數

  //寫資料到Access庫
  ADOTable1.open;
  for iRow:=2 to MaxRow do
  if sheet.cells[iRow,1]<>'' then  //關鍵字不為空
  begin
  ADOTable1.Append ;
  ADOTable1.fieldByName('ID').asInteger:=
   strToInt(sheet.cells[iRow,1]);
  ADOTable1.fieldByName('code').asString:=sheet.cells[iRow,2]; //編碼
  ADOTable1.fieldByName('name').asString:=sheet.cells[iRow,3]; //名稱
  ADOTable1.post;
  end;

  finally
  if not VarIsEmpty(XLApp) then begin  //釋放物件
  XLApp.displayAlerts:=false;
  XLApp.ScreenUpdating:=true;
  XLApp.quit;
  end;
  screen.Cursor:=crDefault;
  end;
end;

//=================== 其他一些屬性方法 ===============//

  curRow:=XLApp.ActiveCell.Row; //當前行數
  XLApp.displayAlerts:=false; //執行宏時是否顯示警告和訊息
  XLApp.ScreenUpdating:=false;  //螢幕功能,提高速度;
  //結束執行後,ScreenUpdating 設回到 True

  XLApp.run('macroName',params...)//執行宏

  workbook.save ;
  workBook.SaveAs(AFileName,xlNormal,'','',False,False);


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-958545/,如需轉載,請註明出處,否則將追究法律責任。

相關文章