• C#中操作Excel


    在GIS数据处理中,经常遇到与Excel的交互,这里进行简单的总结。

    Excel行列号就像是编辑中的二维数据组,操作Excel相当于操作二维数组。遍历、循环、取值、赋值……

    1.添加引用

    添加引用也有版本的问题,我们都知道每一代office除了有一个以年份命名的销售名称(2003、2007、2010等)外,还有一个类似于内部版本号的代号,是以数字递增的。
    office 2003:office 11
    office 2007:office 12
    office 2010:office 14(听说13不吉利,没有office 13)
    office 2013:office 15

    image

    我添加的是14版,在office2013和office2010环境下测试可用。

    1
    using Microsoft.Office.Interop.Excel

    2.认识对象

    Excel对象模型包括了128个不同的对象,其中用得比较多的就四个:

    (1) Application对象。Application对象处于Excel对象层次结构的顶层,表示Excel自身的运行环境。

    (2) Workbook对象。Workbook对象直接地处于Application对象的下层,表示一个Excel工作薄文件。

    (3) Worksheet对象。Worksheet对象包含于Workbook对象,表示一个Excel工作表。

    (4) Range对象。Range对象包含于Worksheet对象,表示Excel工作表中的一个或多个单元格。

    3.基本操作

    一般在操作中,都不开这下面四个:

    1
    2
    3
    4
    Excel.Application oApp;
    Excel._Workbook oWbook;
    Excel._Worksheet oWSheet;
    Excel.Range oRng;

    然后创建Excel

    1
    2
    3
    //创建Excel对象
    oApp = new Excel.Application();
    oApp.Visible = true;    //是否可见

     创建工作簿、工作表

    1
    2
    3
    //创建一个新的工作簿、工作表
    oWbook = (Excel._Workbook)(oApp.Workbooks.Add(Missing.Value));
    oWSheet = (Excel._Worksheet)oWbook.ActiveSheet;

      取值

    1
    2
    //获取单元格的值
    sheet = ((Microsoft.Office.Interop.Excel.Range)oWSheet.Cells[1, 2]).Text;

      写值

    1
    2
    3
    //设置某行某列的值,从1开始
    oWSheet.Cells[1, 1] = "First Name";
    oWSheet.Cells[1, 2] = "Last Name";

      设置格式

    1
    2
    3
    //设置多个单元格格式
    oWSheet.get_Range("A1""D1").Font.Bold = true;
    oWSheet.get_Range("A1""D1").VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;

      保存

    1
    2
    //保存工作簿
    oWbook.Save();

      另存

    1
    2
    oWbook.SaveAs(filePath + name, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
    Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

       

    下面是一些常用的代码:

    1、 显示当前窗口:ExcelApp.Visible := True;
    2、 更改 Excel 标题栏:ExcelApp.Caption := '标题内容';
    3、 添加新工作簿:ExcelApp.WorkBooks.Add;
    4、 设置第2个工作表为活动工作表:ExcelApp.WorkSheets[2].Activate;
    5、 给单元格赋值:ExcelApp.Cells[1,1].Value := '第一行第一列';
    6、 设置指定列的宽度(单位:字符个数),以第一列为例:
    ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5;
    7、 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:
    ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米
    8、文字水平居中:Excelid.worksheets[1].Rows[1].HorizontalAlignment := $FFFFEFF4;
      文字垂直居中:Excelid.worksheets[1].Rows[1].VerticalAlignment := $FFFFEFF4;
    9、 插入一行或一列:a. ExcelApp.ActiveSheet.Rows[2].Insert;
    b. ExcelApp.ActiveSheet.Columns[1].Insert;
    10、 删除一行或一列:a. ExcelApp.ActiveSheet.Rows[2].Delete;
    b. ExcelApp.ActiveSheet.Columns[1].Delete; 
    11、合并单元格:ExcelApp.worksheets[1].range[A1:F8'].Merge(abc);注:要声明变量abc: Variant;
    12、竖行显示文字:ExcelApp.worksheets[1].Cells.Item[1,1].Orientation:= xlVertical;
    13、单元格加边线:ExcelApp.worksheets[1].Range[A1:F8].Borders.LineStyle := 1;
    14、在第8行之前插入分页符:ExcelApp.WorkSheets[1].Rows[8].PageBreak := 1;
    15、在第4列之前删除分页符:ExcelApp.ActiveSheet.Columns[4].PageBreak := 0;
    16、指定边框线宽度:ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3;
    1-左    2-右   3-顶    4-底   5-斜( )     6-斜( / )
    17、拷贝操作:a.拷贝整个工作表:ExcelApplication1.ActiveSheet.Used.Range.Copy;
    b.拷贝指定区域:ExcelApplication1.ActiveSheet.Range[ 'A1:E2' ].Copy;
                     c.从A1位置开始粘贴:ExcelApplication1.ActiveSheet.Range.[ 'A1' ].PasteSpecial;
    d.从文件尾部开始粘贴:ExcelApplication1.ActiveSheet.Range.PasteSpecial;
    18、清除第一行第四列单元格公式:ExcelApp.ActiveSheet.Cells[1,4].ClearContents;
    19、工作表保存:if not ExcelApp.ActiveWorkBook.Saved then
                   ExcelApp.ActiveSheet.PrintPreview;
    20、工作表另存为:ExcelApp.SaveAs( 'C:ExcelDemo1.xls' );
    21、放弃存盘:ExcelApp.ActiveWorkBook.Saved := True;
    22、关闭工作簿:ExcelApp.WorkBooks.Close;
    23、退出 Excel:ExcelApp.Quit;
    下面是有关打印页面控制的语句:
       24、设置第一行字体属性: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;
    ExcelApp.ActiveSheet.Rows[1].Font.size:=10;
    25、进行页面设置:a.页眉:ExcelApp.ActiveSheet.PageSetup.CenterHeader := '报表演示';
    b.页脚:ExcelApp.ActiveSheet.PageSetup.CenterFooter := '共&N页 第&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;
    26、打印预览工作表:ExcelApp.ActiveSheet.PrintPreview;
    27、打印输出工作表:ExcelApp.ActiveSheet.PrintOut;
    对Excel的其他控制:
    28、excel的多单元格合计功能:ExcelApp..Cells[ARow, ACol].Formula
    := '= SUM($+IntToStr(BeginRow) +:$ + IntToStr(EndRow) +');
    注:声明变量ARow, ACol: Integer;
    29、打开已经存在的Excel文件: ExcelApplication1.Workbooks.Open (c:a.xls
    EmptyParam,EmptyParam,EmptyParam,EmptyParam,
    EmptyParam,EmptyParam,EmptyParam,EmptyParam,
       EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);

    空的时候,还是把它写个类。

    参考:http://www.cnblogs.com/seven-google/archive/2012/02/10/2344819.html

    HK
  • 相关阅读:
    Java并发之同步原语
    Iterator与ListIterator的区别
    java集合之深入分析ArrayList
    深入分析HashMap
    ssm项目,web容器无法初始化项目
    疯狂java学习笔记
    Delphi 转载:图形的移动、交错、雨滴状、百页窗、积木堆叠等显现方式
    Delphi 转载:Delphi 如何GET/POST 调用HTTP请求
    Delphi 界面和组件背景透明相关方法
    Delphi 把Form界面设置有弧度的矩形
  • 原文地址:https://www.cnblogs.com/HarryK4952/p/14224249.html
Copyright © 2020-2023  润新知