Delphi与Excel

uses comobj,excel97,excel2000;

//从Excel写数据到Access库
prodedure ExcelToMdb(EXLfile:string;);
var 
  sheet,XLApp,workbook : variant; 
  iRow,MaxRow:integer;
begin
  screen.Cursor:=crHourGlass;? 
  try
    //创建对象
    XLApp:=createOleObject('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).Select;
    maxRow:=XLApp.ActiveCell.Row;       //最大行数
    maxCol:=XLApp.ActiveCell.Column ;   //最大列数

    //写数据到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);

使用方便,功能强大。 type FileCheckResult = (fcrNotExistend,fcrNotXSLFile,fcrValidXSL); //文件不存在,不是XSL文件,合法的XSL文件 TOLEExcel = class(TComponent) private FExcelCreated: Boolean; FVisible: Boolean; FExcel: Variant; //Excel程序对象 FWorkBook: Variant; //Excel工作簿对象 FWorkSheet: Variant; //Excel工作簿 工作表对象 FCellFont: TFont; //单元格字体对象 FTitleFont: TFont; // FFontChanged: Boolean; FIgnoreFont: Boolean; FFileName: TFileName; //********************************************自己添加*****************************// FCreateFromFile:Boolean; //指示是否打开已有文件 FExcelCaption:string; //用程序打开Excel的窗体标 //*********************************来自U_Report*****************************// FRCPrePage:Integer; //每页显示的记录数 FMax:Integer; //最大的数组个数 procedure SetExcelCellFont(var Cell: Variant); procedure SetExcelTitleFont(var Cell: Variant); procedure GetTableColumnName(const Table: TTable; var Cell: Variant); procedure GetQueryColumnName(const Query: TQuery; var Cell: Variant); procedure GetFixedCols(const StringGrid: TStringGrid; var Cell: Variant); procedure GetFixedRows(const StringGrid: TStringGrid; var Cell: Variant); procedure GetStringGridBody(const StringGrid: TStringGrid; var Cell: Variant); protected procedure SetCellFont(NewFont: TFont); procedure SetTitleFont(NewFont: TFont); procedure SetVisible(DoShow: Boolean); function GetCell( ARow,ACol: Integer): string; procedure SetCell(ACol, ARow: Integer; const Value: string); function GetDateCell(ACol, ARow: Integer): TDateTime; procedure SetDateCell(ACol, ARow: Integer; const Value: TDateTime); //*********************************************自己添加************************************// procedure SetCaption(ACaption:string);//设置打开文件后,Excel主程序的窗体标题 function GetCapiton:string;//返回打开文件后,Excel主程序的窗体标题 public constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure C
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值