zoukankan      html  css  js  c++  java
  • 对Excel操作(VBA)

    经常用到,但有时会忘记,把大体用法写在blog中,方便查看。里面有每个功能的注解
    uses ComObj;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      ExcelApp,workbook,sheet:OleVariant;
    begin
      {創建ExcelApplication}
      ExcelApp:=CreateOleObject('Excel.Application');
      {新增一工作薄}
      workbook := ExcelApp.WorkBooks.Add;
      {獲取當前的Sheet,工作薄會自動創建一個sheet}
      sheet:=workbook.sheets[1];
      {新增一Sheet並命名}
      sheet:=workbook.sheets.add;
      sheet.Name:='xx';
      {Excel是否可見}
      ExcelApp.visible:=true;
    
      //range['單元格1:單元格n']或range['單元格1','單元格n'],從單元格1到單元格n的區域
      sheet.range['A1:C6'].merge;
      sheet.range['A1:C6'].select;
      sheet.range['A1:C6']:='測試點';
      sheet.range['D7','G20'].merge;
     //sheet.range['A20:A20']等於sheet.range['A20']
      sheet.range['A20:A20'].value:='A20'; //單個單元格
      sheet.range['A20:A20'].Borders.LineStyle:=1; //線的類型
      sheet.range['A20:A20'].Borders.Weight:=3;  //線的粗細
      sheet.range['A20:A20'].Borders.Color:=clred;  //線的顏色
      sheet.range['A20:A20'].Font.Color:=clblue;  //字體顏色
    sheet.Range['A20:A20'].Font.Bold := true; //設置字體粗細 Italic = True表示斜線 Name = "华文新魏"
    sheet.range['A20:A20'].Interior.Color:=clgreen;//單元格背景色 

      sheet.range['A20:A20'].RowHeight:=40; //高度(單位:點)
      sheet.range['A20:A20'].ColumnWidth:=40; //寬度(單位:點)
      sheet.range['A20:A20'].HorizontalAlignment := 3; //水平對齊 2:左對齊 3:居中 4:右對齊
      sheet.range['A20:A20'].VerticalAlignment := 2; //垂直對齊 1:top 2:center 3:bottom


    //cells(行,列) ,從1開始 sheet.cells(10,1):='vvvv';
    /*
    对已经存在Excel文件修改后保存时,会弹出一个询问对话框: 

          在当前位置发现已经存在名为“RESUME.XLW” 的文件。您希望将该文件替换掉吗?

         在保存前设置DisplayAlerts属性,即可屏蔽该对话框

    */
    WorkBook.DisplayAlerts:=False
    if FileExists('d:aa.xls') then DeleteFile('d:aa.xls'); {保存為文件} workbook.saveas('d:aa.xls');
    // WorkBook.Save(); workbook.close(true);
    //參數表示是否關閉已改動的工作薄 {退出Excel程序} ExcelApp.application.quit; ExcelApp:=Unassigned; end;

    网上找到的其它信息:

    var ExcelApp: Variant;
    ExcelApp := CreateOleObject( 'Excel.Application' );

    1) 显示当前窗口:
    ExcelApp.Visible := True;

    2) 更改 Excel 标题栏:
    ExcelApp.Caption := '应用程序调用 Microsoft Excel';

    3) 添加新工作簿:
    ExcelApp.WorkBooks.Add;

    4) 打开已存在的工作簿:
    ExcelApp.WorkBooks.Open( 'C:ExcelDemo.xls' );

    5) 设置第2个工作表为活动工作表:
    ExcelApp.WorkSheets[2].Activate;  
    或 
    ExcelApp.WorksSheets[ 'Sheet2' ].Activate;

    6) 给单元格赋值:
    ExcelApp.Cells[1,4].Value := '第一行第四列';

    7) 设置指定列的宽度(单位:字符个数),以第一列为例:
    ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5;

    8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:
    ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米

    9) 在第8行之前插入分页符:
    ExcelApp.WorkSheets[1].Rows[8].PageBreak := 1;

    10) 在第8列之前删除分页符:
    ExcelApp.ActiveSheet.Columns[4].PageBreak := 0;

    11) 指定边框线宽度:
    ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3;
    1-左    2-右   3-顶    4-底   5-斜(  )     6-斜( / )

    12) 清除第一行第四列单元格公式:
    ExcelApp.ActiveSheet.Cells[1,4].ClearContents;

    13) 设置第一行字体属性:
    ExcelApp.ActiveSheet.Rows[1].Font.Name := '隶书';
    ExcelApp.ActiveSheet.Rows[1].Font.Color  := clBlue;
    ExcelApp.ActiveSheet.Rows[1].Font.Bold   := True;
    ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True;

    14) 进行页面设置:

    a.页眉:
        ExcelApp.ActiveSheet.PageSetup.CenterHeader := '报表演示';
    b.页脚:
        ExcelApp.ActiveSheet.PageSetup.CenterFooter := '第&P页';
    c.页眉到顶端边距2cm:
        ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;
    d.页脚到底端边距3cm:
        ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;
    e.顶边距2cm:
        ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035;
    f.底边距2cm:
        ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035;
    g.左边距2cm:
        ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035;
    h.右边距2cm:
        ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035;
    i.页面水平居中:
        ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;
    j.页面垂直居中:
        ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2/0.035;
    k.打印单元格网线:
        ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True;

    15) 拷贝操作:

    a.拷贝整个工作表:
        ExcelApp.ActiveSheet.Used.Range.Copy;
    b.拷贝指定区域:
        ExcelApp.ActiveSheet.Range[ 'A1:E2' ].Copy;
    c.从A1位置开始粘贴:
        ExcelApp.ActiveSheet.Range.[ 'A1' ].PasteSpecial;
    d.从文件尾部开始粘贴:
        ExcelApp.ActiveSheet.Range.PasteSpecial;

    16) 插入一行或一列:
    a. ExcelApp.ActiveSheet.Rows[2].Insert;
    b. ExcelApp.ActiveSheet.Columns[1].Insert;

    17) 删除一行或一列:
    a. ExcelApp.ActiveSheet.Rows[2].Delete;
    b. ExcelApp.ActiveSheet.Columns[1].Delete;

    18) 打印预览工作表:
    ExcelApp.ActiveSheet.PrintPreview;

    19) 打印输出工作表:
    ExcelApp.ActiveSheet.PrintOut;

    20) 工作表保存:
    if not ExcelApp.ActiveWorkBook.Saved then
       ExcelApp.ActiveSheet.PrintPreview;

    21) 工作表另存为:
    ExcelApp.SaveAs( 'C:ExcelDemo1.xls' );

    22) 放弃存盘:
    ExcelApp.ActiveWorkBook.Saved := True;

    23) 关闭工作簿:
    ExcelApp.WorkBooks.Close;

    24) 退出 Excel:
    ExcelApp.Quit; 

  • 相关阅读:
    基于脚本的nodemanager管理器
    SSH 等效性问题 总提示输入密码问题
    增量检查点【概念】
    【ORA错误大全】 ORA-19527
    DataGuard 配置须知
    rhel5.4+oracle 10g rac
    microg,google新推的一个计划
    [转]Android ListView 与 RecyclerView 对比浅析—缓存机制
    android studio的Beta, Canary, Dev, Stable四种Channel版本介绍、分析与选择
    android studio增量更新
  • 原文地址:https://www.cnblogs.com/yagzh2000/p/13321435.html
Copyright © 2011-2022 走看看