使用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_";//这个表示是一个数字但是保留两位小数。
posted @ 2009-06-08 17:36  尤文之鹤  阅读(1112)  评论(0编辑  收藏  举报