项目中常常会涉及到对Excel的读写,设置格式的操作,通常的情况下,我会使用开源的第三方组件NPOI,因为它高效轻便。当然,Excel的读写还有其他很多方式,这里不再一一列举。
但遇到一些稍微复杂的情况时,还得用COM组件才能完成。Excel COM组件是以接口形式向客户端提供服务的一个dll。经过一段时间的使用,想把经常使用的用法,做一下归纳总结。
!!本文不定时更新……!!
【VS中dll引用】
首先要引入相应的Office->Excel的dll。在VS中依次点击引用->添加引用->COM->Microsoft Excel xx Object Library。(安装的Office的版本不同,xx部分会不同,我电脑上安装的是Office 2019,所以是16.0。但代码写法都一样)
如果在运行时,创建ExcelApplication报错,则将嵌入互操作类型改为false
然后引用命名空间,当然也可以给该命名空间起一个别名:
using Excel = Microsoft.Office.Interop.Excel;
注意,下标都是从1开始的,从1开始的,从1开始的!!
【基础知识】
要使用Excel COM组件,我们需要了解4个对象:Application, Workbook, Worksheet, Range
1. Application: Excel实例,创建此对象,会在任务管理器中多出一个EXCEL.EXE的进程
2. WorkBook:Excel文件,相当于工作薄。
3. Worksheet:Excel文件中的工作表。
4. Range:区域块,相当于在excel中用鼠标选中一个或多个单元格。
【工作簿的操作】
- 新建一个工作薄,并以“test.xlsx”保存至指定目录
Excel.Application xlApp = new Excel.Application();
Excel.Workbook workbook = null;
workbook = xlApp.Workbooks.Add();
workbook.SaveAs(@"D:\test.xlsx");
xlApp.Quit();
xlApp = null;
此时生成的test.xlsx中有一个空白的工作表
- 打开工作薄
往一个已经定义好的空白模板中写入数据等情况
Excel.Application xlApp = new Excel.Application();
Excel.Workbook workbook = null;
workbook = xlApp.Workbooks.Open(@"D:\test.xlsx");
- 关闭工作薄
workbook.Close(SaveChanges: true);
写文件内容有修改时,写法如上。
- 保存工作簿的副本(另存为)
workbook.SaveCopyAs(@"D:\123.xlsx");
workbook.Close();
【工作表的操作】
- 打开工作薄,并获取某个工作表
Excel.Application xlApp = new Excel.Application();
Excel.Workbook workbook = null;
workbook = xlApp.Workbooks.Open(filePath);//文件有绝对路径
Excel.Worksheet worksheet = workbook.Worksheets["sheetName"];//按工作表名称获取
//or
Excel.Worksheet worksheet = workbook.Worksheets[1];//按下标获取
- 新建工作表
与在excel中操作一样,新建的工作表后,选中的工作表为刚刚新建的
//在excel文件中处于选中状态的工作表前添加
Excel.Worksheet worksheet = workbook.Worksheets.Add();
worksheet.Name = "new sheet";
//**结果:new sheet,Sheet1**
//在指定工作表前添加
Excel.Worksheet w1 = workbook.Worksheets["Sheet1"];
Excel.Worksheet worksheet = workbook.Worksheets.Add(Before: w1);
worksheet.Name =