1、 Interop.Excel.dll 的查找
本文中将 Microsoft.Office.Interop.Excel.dll库简称为Interop.Excel.dll库
其实在使用Visual Studio进行Office的Excel开发时,Microsoft.Office.Interop.Excel.dll 可以在类似于下面的目录中找到。并不需要再在网上下载了。
E:\Program Files\Microsoft Visual Studio 11.0\Visual Studio Tools for Office\PIA\Office14
2、Interop.Excel.dll 中类的介绍
ApplicationClass
就是我们的excel应用程序
Workbook
就是我们平常见的一个个excel文件,经常是使用Workbooks类对其进行操作。
Worksheet
excel文件中的一个个sheet页。
Worksheet.Cells[row, column]
就是某行某列的单元格,注意这里的下标row和column都是从1开始的,跟我平常用的数组或集合的下标有所不同。
3、对Excel的操作
3.1 打开Excel文件、释放资源
任何操作Excel的动作首先肯定是用excel应用程序,首先要new一个ApplicationClass 实例,并在最后将此实例释放。
1 2 3 4 5 6 | // 创建Excel应用程序对象的一个实例,相当于我们从开始菜单打开Excel应用程序。 ApplicationClass xlsApp = new ApplicationClass(); if (xlsApp == null ) { //对此实例进行验证,如果为null则表示运行此代码的机器可能未安装Excel } |
打开Excel文件
1 2 3 | Workbook workbook = xlsApp.Workbooks.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); Worksheet mySheet = workbook.Sheets[1] as Worksheet; //第一个sheet页 mySheet.Name = "testsheet" ; //这里修改sheet名称 |
释放打开的资源
1 2 3 4 | workbook.Close( true , Type.Missing, Type.Missing); workbook = null ; xlsApp.Quit(); xlsApp = null ; |
3.2 对Sheet(页)的操作
复制sheet页 1 | mySheet.Copy(Type.Missing, workbook.Sheets[1]); //复制mySheet成一个新的sheet页,复制完后的名称是mySheet页名称后加一个(2),这里就是testsheet(2), |
复制完后,Worksheet的数量增加一个。注意,这里Copy方法的两个参数,指是的复制出来新的sheet页是在指定sheet页的前面还是后面,上面的例子就是指复制的sheet页在第一个sheet页的后面。
删除sheet页 1 2 | xlsApp.DisplayAlerts = false ; //如果想删除某个sheet页,首先要将此项设为fasle。 (xlsApp.ActiveWorkbook.Sheets[1] as Worksheet).Delete(); |
选中sheet页
(xlsApp.ActiveWorkbook.Sheets[1] as Worksheet).Select(Type.Missing); //选中某个sheet页
3.3 对Excel文件的操作
另存excel文件
1 2 | workbook.Saved = true ; workbook.SaveCopyAs(filepath); |
3.4 其它常用功能
传入一个DataTable生成Excel在excel中插入图片,可以在上面的代码环境的最后加入以下代码段。
1 2 3 4 | // 在Excel的指定位置加入图片 worksheet.Shapes.AddPicture( "C:\\Users\\spring\\Desktop\\1.gif" , Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, 100, 200, 200, 300); // 在Excel的指定位置加入文本框,和里面的内容. worksheet.Shapes.AddTextEffect(Microsoft.Office.Core.MsoPresetTextEffect.msoTextEffect1, "123456" , "Red" , 15, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue, 150, 200); |
对以上代码的调用
1 2 3 4 5 6 7 8 9 10 11 12 | public void GenerateExcel() { DataTable dt = new DataTable(); dt.Columns.Add( "Name" , typeof ( string )); dt.Columns.Add( "Age" , typeof ( string )); DataRow dr = dt.NewRow(); dr[ "Name" ] = "spring" ; dr[ "Age" ] = "20" ; dt.Rows.Add(dr); dt.AcceptChanges(); ExportExcel(dt); } |
4、系统性
创建一个ExcelBE类
接下来设计一个Excel 操作的基类ExcelBase
对其的调用方式