1.首先需要引入Excel的Com组件,Microsoft Excel 11.0 Object Library 1.5(该组件版本为office2003)
添加该引用后在解决方案的引用文件夹里会有Excel和Microsoft.Office.Core两个引用。
2.我们要对Excel文档进行操作首先需要对Excel文档的结构有一个了解。一个Excel文档包含若干个sheet,每个sheet里又有若干个单元格。也就是说Excel文档是一个三层结构的实体:book文档对象àsheet对象à单元格对象。
在C#里相应的提供了这三个对象的操作类
ApplicationClass==Excel操作对象
ApplicationClass ExcelApp = null;定义了一个Excel操作对象,与具体文档无关
_Workbook == book对象
_Workbook wBook = null;定义了一个book对象
_Workbook sheet = null;定义了一个sheet对象
Microsoft.Office.Interop.Excel.Range == 单元格对象(Renge提供了一组对单元格的操作接口)
Microsoft.Office.Interop.Excel.Range rangeSheet = null;定义了一个单元格操作对象。
明白了Excel的结构和C#中提供的对应的操作类或接口,对我们理解用程序实现Excel的各种操作很有帮助。至少当需要在Excel的哪个级别上操作时,你知道该在哪个类里去找相应的方法。
3.C#对Excel文档操作的函数及功能
ExcelApp = new ApplicationClass();实例化一个Excel操作对象
ExcelApp.Visible = false;让其不可见(一般在写的时候设置这个属性,写完后更改为true就可以展现在用户面前)
wBook = ExcelApp.Workbooks._Open(modelPath, Type.Missing, Type.Missing, Type.Missing, Type.Missing,Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);用Excel操作对象去打开一个Excel文档实体(wBook)这里主要一个参数就是modelPath表示文档所在路径
_Workbook sheet1 = (Worksheet)wBook.Sheets[1];获得wBook里的第一个sheet
rangeSheet=sheet1.get_Range(sheet1.Cells[rowIndex,colIndex],sheet1.Cells[rowIndex,colIndex]);sheet通过调用get_Range函数获得单元格的选定范围,它是对Excel操作最主要的一个对象,因为我们对Excel的操作实际上就是对单元格的操作。所以获得了操作单元格对象就可以实现我们想要的任何操作比如
rangeSheet.Merge(this. rangeSheet.MergeCells);如果不是对一个单元格操作,即单元格的选定的是一个范围,可以用此函数实现合并单元格
rangeSheet.HorizontalAlignment=Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;设置单元格内容的对齐方式
rangeSheet.Value2通过Value2属性给选定的单元格赋值
rangeSheet.Font.Name = "宋体";字体的设置
rangeSheet.Font.Size = 10;字体大小
rangeSheet.Font.Bold = true;字体加粗
//绘制所选单元格范围内的线条类型,3为虚线,1为实线
RangeSheet.Borders.LineStyle = 3;
//绘制所选单元格范围内上下左右边框为连续的实线
RangeSheet.Borders.get_Item(XlBordersIndex.xlEdgeTop).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
RangeSheet.Borders.get_Item(XlBordersIndex.xlEdgeBottom).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
RangeSheet.Borders.get_Item(XlBordersIndex.xlEdgeRight).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
RangeSheet.Borders.get_Item(XlBordersIndex.xlEdgeLeft).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
//选定范围内的对齐方式
RangeSheet.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
以下是网上找到一些关于excel操作的资源可通过链接查看http://www.soaspx.com/dotnet/csharp/csharp_20091125_1762.html