zoukankan      html  css  js  c++  java
  • 使用C#向Excel中写数据

       由于客户对Excel的使用都比较熟悉了。所以在我们的系统中输出报表的时候都需要输出为Excel。我使用的是VS 2003 其中对使用Excel没有提供很方便的工具。只能自己把Excel的Com组件添加进来。
      但是在使用Com组件提供的类型的时候,很多方法的返回值或者参数都是object.不知道实际的类型。使用起来很困难。
       下面将我所用过的各种功能的C# 写发都列出来.
        1.启动Excel进程
           Excel.Application m_objExcel = new Excel.Application(); //这个过程很简单。new 一个对象就可以了。
        2.打开一个Excel文件。
          在向Excel文件中写东西的时候,一般是先打开一个已经存在的文件,由于输出报表的时候都是需要模版的。所以我们的系统中都是这样。如何建立一个空白的Excel文件的问题还没有解决。
          Excel.Workbooks m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
          m_objBooks.Open (excelFilePath,Type.Missing ,Type.Missing ,Type.Missing ,Type.Missing ,Type.Missing ,Type.Missing ,Type.Missing ,Type.Missing ,Type.Missing ,Type.Missing ,Type.Missing ,Type.Missing ,Type.Missing ,Type.Missing );
          其中excelFilePath是Excel文件的路径。其它的都是Type.Missing。
       3.获取 Worksheet
         m_objBook = m_objBooks.get_Item (1);  
         Excel.Sheets m_objSheets = (Excel.Sheets)m_objBook.Worksheets;
         Excel._Worksheet  m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));
        Worksheet是实际可以写数据的东西,就是我们在Excel中看到的一页页的东西。
       4.获取Range
         在操作Cell的时候可以使用Cell和Range。Range就是多个Cell。但是一个Cell也可以作为Range。
         Excel.Range m_objRange=(Excel.Range)=m_objSheet.getRange("A1","D5");
         注意这个制定Range范围的参数,是先列后行的。而且列使用一个两个字母来表示。和你在Excel中看到的一样。
       5.写数据
          写数据有两种方式。一种是直接写到特定的Cell中.
          m_objSheet.Cells[5,6]=1568.36;
          还有一种就是使用Range或者Cell.
          m_objRange.Value2=1568.36;
       6.控制Range的颜色.
         我控制颜色的时候是使用其Interior.ColorIndex来指定。如下所示:
         Interior .ColorIndex=35;
         应该还有别的方法,但是我没有进一步研究。使用这个已经够用了。
       7.控制Range的边框
         边框通过Range的Borders属性来控制,代码如下:
         range.Borders[Excel.XlBordersIndex .xlEdgeTop].LineStyle =Excel.XlLineStyle .xlContinuous;
         Excel.XlBordersIndex是一个枚举,可以用来指定是哪一个边框。边框本身还有一些属性可以进一步控制。这里就不一一列举了。
       8.合并单元格
         合并单元格需要分两步走。首先需要获取一个Range 这个Range就是需要合并的单元格的左上角和右下角确定的。然后设置Range的MergeCells为true.
        m_objRange=m_objSheet.getRange("A1","D6");
        m_objRange.MergeCells=true;
      9.设置对齐方式
        直接看代码:
        m_objRange.VerticalAlignment =Excel.XlVAlign.xlVAlignCenter;
        m_objRange.HorizontalAlignment =Excel.XlHAlign .xlHAlignCenter ;
      10。设置内容格式
        Excel默认将所有的内容都识别为数子,这样有些不方便。有时候输出的内容不是数据,但是也是一串数字,比如编号等,这个时候Excel就会帮倒忙了。所以需要指定格式
        m_objRange.NumberFormatLocal="@";//这样就可以表示是文本了
        m_objRange.NumberFormatLocal="0.00_";//这个表示是一个数字但是保留两位小数。
  • 相关阅读:
    深入浅出MySQL灵魂十连问,你真的有把握吗?
    sharding-jdbc
    计算表数据大小,加查询表数据大小情况sql
    高并发下数据库分库分表面试题整理
    干货|一次MySQL两千万数据大表的优化过程,三种解决方案
    CompletableFuture 使用详解
    mysql innodbd 锁
    mysql : show processlist 详解
    微信支付V2.0-python
    python代码打包加密
  • 原文地址:https://www.cnblogs.com/linghe/p/1498934.html
Copyright © 2011-2022 走看看