简介:Epplus是一个使用Open Office XML(Xlsx)文件格式,能读写Excel 2007/2010文件的开源组件
功效:支持对excel文档的汇入汇出,图表(excel自带的图表基本都可以实现)的列印
使用:首先应该下载Epplus的dll文件
1.添加dll文件至工程bin文件中
2.添加引用
using OfficeOpenXml;
using OfficeOpenXml.Drawing;
using OfficeOpenXml.Drawing.Chart;
using OfficeOpenXml.Style;
3.所有的操作语句需要放置在下面的using中
using (ExcelPackage package = new ExcelPackage())
{
}
4.添加sheet
var worksheet = package.Workbook.Worksheets.Add(“sheet1");
5.单元格赋值,这里多说一句,NPOI必须先创建单元格,然后再给单元格赋值,而Epplus不需要,直接找到单元格进行赋值就可以了.
worksheet.Cells[int row, int col].Value = "";
或者
worksheet.Cells["A1"].Value = "";
或者
worksheet.SetValue(row,col,value);//这种赋值方法比上面的性能好一些
6.公式计算
//这是乘法的公式,意思是第三列乘以第四列的值赋值给第五列
worksheet.Cells["E2:E4"].Formula = "C2*D2";
//这是求和公式,意思是第二行第三列的值到第四行第三例的值求和后赋给第五行第三列。
worksheet.Cells[5, 3, 5, 5].Formula = string.Format("SUBTOTAL(9,{0})", new ExcelAddress(2,3,4,3).Address);
7.获取一个区域,并对该区域进行样式设置
using (var range = worksheet.Cells[1, 1, 1, 5]) //获取一个区域,区域范围是第一行第一列到第一行第五列
{
range.Style.Font.Bold = true;
range.Style.Fill.PatternType = ExcelFillStyle.Solid;
range.Style.Fill.BackgroundColor.SetColor(Color.DarkBlue);
range.Style.Font.Color.SetColor(Color.White);
}
8.设置单元格样式
worksheet.Cells["A5:E5"].Style.Border.Top.Style = ExcelBorderStyle.Thin;//设置单元格上边框,同理,右、下、左也一样的设置即可
worksheet.Cells["A5:E5"].Style.Font.Bold = true;//设置单元格字体加粗
9.设置单元格格式
worksheet.Cells["C2:C5"].Style.Numberformat.Format = "#,##0";//设置第二行第三列到第五行第三例的数据格式为整数
worksheet.Cells["D2:E5"].Style.Numberformat.Format = "#,##0.00";//设置第二行第四列到第五行第五列的数据格式为保留小数点后两位
worksheet.Cells["A2:A4"].Style.Numberformat.Format = "@";//设置第二行第一列到第四行第一列的数据格式为文本格式
worksheet.Cells.AutoFitColumns(0); //所有单元格的列都自适应
10.设置筛选器
worksheet.Cells["A1:E4"].AutoFilter = true;//第一行第一列到第四行第五列的数据设置筛选器
11.工作簿进行计算,通常Excel会自动进行计算,但如果你打开工作簿的机器上没有计算引擎,那么这行代码就发挥了作用。
worksheet.Calculate();
12.读操作
worksheet.Cells[row, col].Value //读取指定单元格的值
worksheet.Cells[3, 5].Formula //读取指定单元格的计算公式
worksheet.Cells[3, 5].FormulaR1C1 //读取指定单元格的R1C1引用方式的公式
看了EPPlus的Sample1到7,其中Sample4是根据现有模板文件导出Excel,Sample7是性能表现。剩余代码有时间继续看。
Sample1 基本的导出Excel
Sample2 读取Excel
Sample3 将数据库的数据导出到Excel,以及在Excel中如何指定单元格为超链接样式
Sample4 根据现有模板文件导出Excel
Sample5 根据Excel中的数据画饼图
Sample6 没有仔细看,导出的Excel相当复杂,各种图标,各种图表
Sample7 性能表现,导出66万条数据也就一分钟不到,主要时间耗在了格式化和IO上,且所有数据都在一个sheet中。
ExcelRange cols = ws.Cells["A:XFD"];//选中所有的列,共16384列
Sample8 读取Excel的数据,并对Excel中Sheet的数据进行linq查询,并输出
Sample9 读取不同的txt文件中的数据,导出到Excel中不同的sheet里,并对数据进行计算以及画出图表