C#操作Excel的总结

1、一般创建一个excel实例,如下:

Microsoft.Office.Interop.Excel.Application MyExcel = new Microsoft.Office.Interop.Excel.Application();

但是也可以这样,Microsoft.Office.Interop.Excel.ApplicationClass MyExcel = new Microsoft.Office.Interop.Excel.ApplicationClass();

其中Application和ApplicationClass的联系和区别
代码中使用Application接口,实际在初始化实例时,系统使用Application Class类来初始化Application对象。

也可以使用ApplicationClass、WorkbookClass、WorksheetClass等类来代替接口,但应该避免这样使用。因为这些类可能对有些共享方法产生歧义,编译时会报错。

参考原文为: http://msdn.microsoft.com/en-us/library/ms247302%28office.11%29.aspx

Using these classes has the potential to cause ambiguities if some members share the same name. For example, Microsoft Word exposes both an Microsoft.Office.Interop.Word._Application.Quit(System.Object,System.Object,System.Object) method and an Microsoft.Office.Interop.Word.ApplicationEvents4_Event.Quit event. These ambiguities can generate a compiler error.

但是我在使用MyWorksheet.Activate()方法时同样出现这样的编译错误。

2、Worksheets.Add方法介绍:

Worksheets 对象的 Add 方法:新建工作表、图表或宏表。新建的工作表将成为活动工作表。语法是:expression.Add(Before, After, Count, Type)

expression     :    必需。该表达式返回上面的对象之一。

Before    :    Variant 类型,可选。指定工作表对象,新建的工作表将置于此工作表之前。

After    :    Variant 类型,可选。指定工作表对象,新建的工作表将置于此工作表之后。

Count    :    Variant 类型,可选。要新建的工作表的数目。默认值为 1。

Type    :    Variant 类型,可选。指定工作表类型。

1、Type 可为以下 XlSheetType 常量之一:xlWorksheet、xlChart、xlExcel4MacroSheet 或 xlExcel4IntlMacroSheet。

2、如果要基于现有模板插入工作表,则指定该模板的路径。

3、默认值为 xlWorksheet。

代码 MyWorkBook.Worksheets.Add(Missing.Value, Missing.Value, 1, Missing.Value); 会增加1个worksheet,放在最前面。

MyWorkBook.Worksheets[1],返回的是第一个sheet,但不是Worksheet对象,是System.__ComObject对象,需要(Worksheet)转换一下。

3、其他事项

3.1 如果想显示Excel, MyExcel.Visible = true;

3.2 如果想看workbook中有几个sheet,int i = MyWorkBook.Sheets.Count; 或者 int i = MyWorkBook.Worksheets.Count;

4、我做了一个建立excel的程序,供参考:

        public void GetExcelofList(string SheetName, string[] Title, List<ClsSQLDataToExcel> ContentList, string StrAttachmentList)
        {
            Microsoft.Office.Interop.Excel.ApplicationClass MyExcel = new Microsoft.Office.Interop.Excel.ApplicationClass();
            Microsoft.Office.Interop.Excel.Workbook MyWorkBook = MyExcel.Application.Workbooks.Add(Missing.Value);
            MyWorkBook.Worksheets.Add(Missing.Value, Missing.Value, 1, Missing.Value);   // four sheets, Sheet4,Sheet1,Sheet2,Sheet3
            Microsoft.Office.Interop.Excel.Worksheet MyWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)MyWorkBook.Worksheets[2]; //Select Sheet1
            ((Microsoft.Office.Interop.Excel.Worksheet)MyWorkBook.Worksheets[3]).Delete();  //delete Sheet2
            ((Microsoft.Office.Interop.Excel._Worksheet)MyWorkSheet).Activate();
            MyExcel.DisplayAlerts = false;
            MyWorkSheet.Name = SheetName;
原文地址:https://www.cnblogs.com/zhoukaiwei/p/2393726.html