附1EPPlus使用教程.docx
《附1EPPlus使用教程.docx》由会员分享,可在线阅读,更多相关《附1EPPlus使用教程.docx(13页珍藏版)》请在冰豆网上搜索。
![附1EPPlus使用教程.docx](https://file1.bdocx.com/fileroot1/2023-7/25/e655398a-ca9b-4eef-a6ba-03f0270c4cb5/e655398a-ca9b-4eef-a6ba-03f0270c4cb51.gif)
附1EPPlus使用教程
EPPlus使用教程
1基本介绍
EPPlus是一个使用OpenOfficeXML(xlsx)文件格式,能读写Excel2007/2010文件的开源组件,在导出Excel的时候不需要电脑上安装office,官网为:
。
需要使用的Epplus的DLL文件,从官网上下载下来即可。
基本上Excel上的各种功能(例如图表、VBA、数据透视表、加密、数据验证等)Epplus都能实现,它的一个缺点就是不支持导出2003版的Excel。
网址:
版本:
4.0.4
最后日期:
2015-4-24
创建Excel
首先将epplus的dll文件添加到项目里,然后添加引用即可。
创建Excel,所有代码均放在这个using语句里面,在using语句里面我们可以创建多个worksheet,ExcelPackage后面可以传入路径参数:
using(ExcelPackagepackage=newExcelPackage(newFileInfo(@"d:
\test.xlsx"))){}
创建worksheet:
using(ExcelPackagepackage=newExcelPackage(newFileInfo(@"d:
\test.xlsx")))
{
ExcelWorksheetworksheet=package.Workbook.Worksheets.Add("test");//创建worksheet
}
保存Excel:
using(ExcelPackagepackage=newExcelPackage(newFileInfo(@"d:
\test.xlsx")))
{
ExcelWorksheetworksheet=package.Workbook.Worksheets.Add("test");//创建worksheet
package.Save();//保存excel
}
至此,一个基本的excel已经完工,下面就是填入数据了。
添加数据
Epplus中给单元格赋值非常简单,两种方法:
(注:
Epplus的所有行列数都是以1开始的)
worksheet.Cells[1,1].Value="名称";//直接指定行列数进行赋值
worksheet.Cells["A1"].Value="名称";//直接指定单元格进行赋值
下面是一个完整的输出一个简单的excel的代码:
FileInfonewFile=newFileInfo(@"d:
\test.xlsx");
if(newFile.Exists)
{
newFile.Delete();
newFile=newFileInfo(@"d:
\test.xlsx");
}
using(ExcelPackagepackage=newExcelPackage(newFile))
{
ExcelWorksheetworksheet=package.Workbook.Worksheets.Add("test");
worksheet.Cells[1,1].Value="名称";
worksheet.Cells[1,2].Value="价格";
worksheet.Cells[1,3].Value="销量";
worksheet.Cells[2,1].Value="大米";
worksheet.Cells[2,2].Value=56;
worksheet.Cells[2,3].Value=100;
worksheet.Cells[3,1].Value="玉米";
worksheet.Cells[3,2].Value=45;
worksheet.Cells[3,3].Value=150;
worksheet.Cells[4,1].Value="小米";
worksheet.Cells[4,2].Value=38;
worksheet.Cells[4,3].Value=130;
worksheet.Cells[5,1].Value="糯米";
worksheet.Cells[5,2].Value=22;
worksheet.Cells[5,3].Value=200;
package.Save();
}
2样式设置
公式计算
excel中离不开各种各样的公式计算,在Epplus中运用公式有两种方式,你都可以尝试一下:
worksheet.Cells["D2:
D5"].Formula="B2*C2";//这是乘法的公式,意思是第二列乘以第三列的值赋值给第四列,这种方法比较简单明了
worksheet.Cells[6,2,6,4].Formula=string.Format("SUBTOTAL(9,{0})",newExcelAddress(2,2,5,2).Address);//这是自动求和的方法,至于subtotal的用法你需要自己去了解了
至于别的公式大家可以自己尝试一下。
设置单元格格式
worksheet.Cells[5,3].Style.Numberformat.Format="#,##0.00";//这是保留两位小数
单元格的格式设置还有很多,我就不一一列出来了,基本上excel上能实现的Epplus都能实现,大家可以去Epplus的源码上看。
设置字体和单元格样式
设置单元格对齐方式
worksheet.Cells[1,1].Style.HorizontalAlignment=ExcelHorizontalAlignment.Center;//水平居中
worksheet.Cells[1,1].Style.VerticalAlignment=ExcelVerticalAlignment.Center;//垂直居中
worksheet.Cells[1,4,1,5].Merge=true;//合并单元格
worksheet.Cells.Style.WrapText=true;//自动换行
设置单元格字体样式
worksheet.Cells[1,1].Style.Font.Bold=true;//字体为粗体
worksheet.Cells[1,1].Style.Font.Color.SetColor(Color.White);//字体颜色
worksheet.Cells[1,1].Style.Font.Name="微软雅黑";//字体
worksheet.Cells[1,1].Style.Font.Size=12;//字体大小
设置单元格背景样式
worksheet.Cells[1,1].Style.Fill.PatternType=ExcelFillStyle.Solid;
worksheet.Cells[1,1].Style.Fill.BackgroundColor.SetColor(Color.FromArgb(128,128,128));//设置单元格背景色
设置单元格边框,两种方法
worksheet.Cells[1,1].Style.Border.BorderAround(ExcelBorderStyle.Thin,Color.FromArgb(191,191,191));//设置单元格所有边框
worksheet.Cells[1,1].Style.Border.Bottom.Style=ExcelBorderStyle.Thin;//单独设置单元格底部边框样式和颜色(上下左右均可分开设置)
worksheet.Cells[1,1].Style.Border.Bottom.Color.SetColor(Color.FromArgb(191,191,191));
设置单元格的行高和列宽
worksheet.Cells.Style.ShrinkToFit=true;//单元格自动适应大小
worksheet.Row
(1).Height=15;//设置行高
worksheet.Row
(1).CustomHeight=true;//自动调整行高
worksheet.Column
(1).Width=15;//设置列宽
设置sheet背景
worksheet.View.ShowGridLines=false;//去掉sheet的网格线
worksheet.Cells.Style.Fill.PatternType=ExcelFillStyle.Solid;
worksheet.Cells.Style.Fill.BackgroundColor.SetColor(Color.LightGray);//设置背景色
worksheet.BackgroundImage.Image=Image.FromFile(@"firstbg.jpg");//设置背景图片
插入图片和形状
插入图片
ExcelPicturepicture=worksheet.Drawings.AddPicture("logo",Image.FromFile(@"firstbg.jpg"));//插入图片
picture.SetPosition(100,100);//设置图片的位置
picture.SetSize(100,100);//设置图片的大小
插入形状
ExcelShapeshape=worksheet.Drawings.AddShape("shape",eShapeStyle.Rect);//插入形状
shape.Font.Color=Color.Red;//设置形状的字体颜色
shape.Font.Size=15;//字体大小
shape.Font.Bold=true;//字体粗细
shape.Fill.Style=eFillStyle.NoFill;//设置形状的填充样式
shape.Border.Fill.Style=eFillStyle.NoFill;//边框样式
shape.SetPosition(200,300);//形状的位置
shape.SetSize(80,30);//形状的大小
shape.Text="test";//形状的内容
Epplus里面内置了很多形状,大家可以自己试一试。
超链接
给图片加超链接
ExcelPicturepicture=worksheet.Drawings.AddPicture(
"logo",Image.FromFile(@"firstbg.jpg"),
newExcelHyperLink("http:
\\",UriKind.Relative));
给单元格加超链接
worksheet.Cells[1,1].Hyperlink=newExcelHyperLink(
"http:
\\",UriKind.Relative);
隐藏sheet
worksheet.Hidden=eWorkSheetHidden.Hidden;//隐藏sheet
worksheet.Column
(1).Hidden=true;//隐藏某一列
worksheet.Row
(1).Hidden=true;//隐藏某一行
3图表设置
嵌入VBA代码
首先将vba代码保存成txt文本格式,然后用epplus去调用这个txt文本文件即可,非常简单,当然要想vba调用成功,前提是你的vba代码是没问题的喽!
worksheet.CodeModule.Name="sheet";
worksheet.CodeModule.Code=File.ReadAllText(@"VBA-Code\vba.txt"),Encoding.Default);
Excel加密和锁定
对于一些不希望别人随便改的excel可以对其进行锁定和加密,这样别人只能看不能改了,除非有密码。
worksheet.Protection.IsProtected=true;//设置是否进行锁定
worksheet.Protection.SetPassword("yk");//设置密码
worksheet.Protection.AllowAutoFilter=false;//下面是一些锁定时权限的设置
worksheet.Protection.AllowDeleteColumns=false;
worksheet.Protection.AllowDeleteRows=false;
worksheet.Protection.AllowEditScenarios=false;
worksheet.Protection.AllowEditObject=false;
worksheet.Protection.AllowFormatCells=false;
worksheet.Protection.AllowFormatColumns=false;
worksheet.Protection.AllowFormatRows=false;
worksheet.Protection.AllowInsertColumns=false;
worksheet.Protection.AllowInsertHyperlinks=false;
worksheet.Protection.AllowInsertRows=false;
worksheet.Protection.AllowPivotTables=false;
worksheet.Protection.AllowSelectLockedCells=false;
worksheet.Protection.AllowSelectUnlockedCells=false;
worksheet.Protection.AllowSort=false;
属性设置
针对整个Excel本身的一些其他设置
epk.Workbook.Properties.Title="inventory";//设置excel的标题
epk.Workbook.Properties.Author="mei";//作者
epk.Workbook.Properties.Comments="thisisatest";//备注
epk.Workbook.Properties.Company="ABC";//公司
下拉框
设置下拉框时首先需要设置下拉框显示的数据区域块并将其命名。
varval=worksheet.DataValidations.AddListValidation(worksheet.Cells[7,8].Address);//设置下拉框显示的数据区域
val.Formula.ExcelFormula="=parameter";//数据区域的名称
val.Prompt="下拉选择参数";//下拉提示
val.ShowInputMessage=true;//显示提示内容
4图表设置
Epplus的图表实现是很简单的,它支持的图表类型也很多,基本上能满足我们的需求。
创建图表分为三步(以柱状图举例):
创建图表
ExcelChartchart=
worksheet.Drawings.AddChart("chart",eChartType.ColumnClustered);//eChartType中可以选择图表类型
选择数据
这一步是很关键的一步,chart.Series.Add()方法所需参数为:
chart.Series.Add(Y轴数据区,X轴数据区)
ExcelChartSerieserie=chart.Series.Add(worksheet.Cells[2,3,5,3],worksheet.Cells[2,1,5,1]);//设置图表的x轴和y轴
serie.HeaderAddress=worksheet.Cells[1,3];//设置图表的图例
设置图表样式
chart.SetPosition(150,10);//设置位置
chart.SetSize(500,300);//设置大小
chart.Title.Text="销量走势";//设置图表的标题
chart.Title.Font.Color=Color.FromArgb(89,89,89);//设置标题的颜色
chart.Title.Font.Size=15;//标题的大小
chart.Title.Font.Bold=true;//标题的粗体
chart.Style=eChartStyle.Style15;//设置图表的样式
chart.Legend.Border.LineStyle=eLineStyle.Solid;
chart.Legend.Border.Fill.Color=Color.FromArgb(217,217,217);//设置图例的样式
基本上生成图表就这么些东西了,不过不同的图表属性可能略有差异,得根据具体图表具体分析。
下面是例子的全部代码:
FileInfonewFile=newFileInfo(@"d:
\test.xlsx");
if(newFile.Exists)
{
newFile.Delete();
newFile=newFileInfo(@"d:
\test.xlsx");
}
using(ExcelPackagepackage=newExcelPackage(newFile))
{
ExcelWorksheetworksheet=package.Workbook.Worksheets.Add("test");
worksheet.Cells.Style.WrapText=true;
worksheet.View.ShowGridLines=false;//去掉sheet的网格线
worksheet.Cells[1,1].Value="名称";
worksheet.Cells[1,2].Value="价格";
worksheet.Cells[1,3].Value="销量";
worksheet.Cells[2,1].Value="大米";
worksheet.Cells[2,2].Value=56;
worksheet.Cells[2,3].Value=100;
worksheet.Cells[3,1].Value="玉米";
worksheet.Cells[3,2].Value=45;
worksheet.Cells[3,3].Value=150;
worksheet.Cells[4,1].Value="小米";
worksheet.Cells[4,2].Value=38;
worksheet.Cells[4,3].Value=130;
worksheet.Cells[5,1].Value="糯米";
worksheet.Cells[5,2].Value=22;
worksheet.Cells[5,3].Value=200;
using(ExcelRangerange=worksheet.Cells[1,1,5,3])
{
range.Style.HorizontalAlignment=ExcelHorizontalAlignment.Center;
range.Style.VerticalAlignment=ExcelVerticalAlignment.Center;
}
using(ExcelRangerange=worksheet.Cells[1,1,1,3])
{
range.Style.Font.Bold=true;
range.Style.Font.Color.SetColor(Color.White);
range.Style.Font.Name="微软雅黑";
range.Style.Font.Size=12;
range.Style.Fill.PatternType=ExcelFillStyle.Solid;
range.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(128,128,128));
}
worksheet.Cells[1,1].Style.Border.BorderAround(ExcelBorderStyle.Thin,Color.FromArgb(191,191,191));
worksheet.Cells[1,2].Style.Border.BorderAround(ExcelBorderStyle.Thin,Color.FromArgb(191,191,191));
worksheet.Cells[1,3].Style.Border.BorderAround(ExcelBorderStyle.Thin,Color.FromArgb(191,191,191));
worksheet.Cells[2,1].Style.Border.BorderAround(ExcelBorderStyle.Thin,Color.FromArgb(191,191,191));
worksheet.Cells[2,2].Style.Border.BorderAround(ExcelBorderStyle.Thin,Color.FromArgb(191,191,191));
worksheet.Cells[2,3].Style.Border.BorderAround(ExcelBorderStyle.Thin,Color.FromArgb(191,191,191));
worksheet.Cells[3,1].Style.Border.BorderAround(ExcelBorderStyle.Thin,Color.FromArgb(191,191,191));
worksheet.Cells[3,2].Style.Border.BorderAround(ExcelBorderStyle.Thin,Color.FromArgb(191,191,191));
worksheet.Cells[3,3].Style.Border.BorderAround(ExcelBorderStyle.Thin,Color.FromArgb(191,191,191));
worksheet.Cells[4,1].Style.Border.BorderAround(ExcelBorderStyle.Thin,Color.FromArgb(191,