在日常的开发工作中,对Excel的操作还是蛮常见的,一般来讲都是选择使用第三方的组件的,这里就来介绍下epplus这个组件的大概使用方法及如何查看文档(也就是在文档中找到相应的一些方法或属性)。
这里附上dll的下载地址:http://pan.baidu.com/s/1hqvILow
文档的下载地址,当然是英文版的:http://pan.baidu.com/s/1gdj98CN。文档中包含很多命名空间,这里只说常用的OfficeOpenXml与OfficeOpenXml.style
官网地址,上面有论坛有些问题可以从里面找到解答:http://epplus.codeplex.com/
1.如何通过epplus获得excel的对象?
//路径需要完整路径
string strFileFullName = "E:\test\test.xlsx";
FileInfo newFile = new FileInfo(strFileFullName);
//如果文件已经存在,那么删除旧的,新建一个新的
if (newFile.Exists)
{
newFile.Delete();
newFile = new FileInfo(strFileFullName);
}
ExcelPackage package = new ExcelPackage(newFile);
这里使用到了了ExcelPackage这个类,这个类的主要作用就是通过不同的方法(可以看到这个类有很多构造函数)来获取Excel文件的对象,同时还有一些方法与属性可以使用,具体的请参阅文档。
2.如何创建excel中的sheet?
//创建一个新的sheet用于后续操作
ExcelWorksheet sheet1 = package.Workbook.Worksheets.Add("sheet1");
//获取excel中的一个sheet用于后续操作(通过模板写数据的可用此方法)
ExcelWorksheet sheet2 = package.Workbook.Worksheets["sheet2"];
这里接触到2个类,一个是ExcelWorksheets(Excel中所有sheet的集合),一个是ExcelWorksheet(Excel中的单个sheet对象)。它们的方法与属性请参见文档。
ExcelWorksheet的View属性可以为sheet设置锁定列等样式。
3.如何为sheet中单元格设置值?
//设置cell的值就是这么简单,比npoi还是方便点的
sheet1.Cells[1, 1].Value = 1;
//也可以获取多个cell区域,可以用来设置合并等样式
sheet1.Cells[1, 1,4,4].Merge = true;
获取cell使用的ExcelRange这个类,可以看到可以获取单个或多个单元格用于处理。
4.如何设置一些常用格式?
(1)锁定行列
//通过sheet里的view属性来设置锁定行列
sheet1.View.FreezePanes(2, 2);
对整个excel样式的设置在ExcelWorkbookView类中,对sheet样式的设置在ExcelWorkbooksheetView类中。详见文档。
(2)设置过滤
//设置一个区域有过滤
sheet1.Cells[1, 1, 4, 4].AutoFilter = true;
(3)自动列宽
//此方法有3个重载,可以设置最小与最大的宽度
//选定一个区域设置
sheet1.Cells[1, 1, 4, 4].AutoFitColumns();
//整个sheet都设置
sheet1.Cells.AutoFitColumns();
(4)单元格格式设置
单元格格式在类ExcelStyle类里,此类在OfficeOpenXml.style命名空间下,在excel中右键单元格设置单元格格式的东西,在这里基本都可以进行设置。还有一个很方便的地方,可以选择一个区域进行设置,那么此区域包含的所有单元格都会应用上样式。
//字体
//可以对font单个属性设置
sheet1.Cells.Style.Font.Name = "宋体";
sheet1.Cells.Style.Font.Size = 9;
//也可以定义个font对象然后赋值
System.Drawing.Font font = new Font("宋体", 9, FontStyle.Regular);
sheet1.Cells.Style.Font.SetFromFont(font);
//设置边框为4面细边框颜色为黑色
sheet1.Cells.Style.Border.Top.Style = ExcelBorderStyle.Thin;
sheet1.Cells.Style.Border.Right.Style = ExcelBorderStyle.Thin;
sheet1.Cells.Style.Border.Bottom.Style = ExcelBorderStyle.Thin;
sheet1.Cells.Style.Border.Left.Style = ExcelBorderStyle.Thin;
sheet1.Cells.Style.Border.Top.Color.SetColor(System.Drawing.Color.Black);
sheet1.Cells.Style.Border.Right.Color.SetColor(System.Drawing.Color.Black);
sheet1.Cells.Style.Border.Bottom.Color.SetColor(System.Drawing.Color.Black);
sheet1.Cells.Style.Border.Left.Color.SetColor(System.Drawing.Color.Black);
(5)公式
//简单公式
sheet1.Cells[1, 1].Formula = "A1*B2";
//复杂公式(比如合计等)
sheet1.Cells[1, 1].Formula = string.Format("SUBTOTAL(9,{0})", new ExcelAddress(2, 3, 4, 3).Address);