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
对其的调用方式