在.NET中不安装Office使用EPPlus生成带图表的Excel报表之欧阳育创编_第1页
在.NET中不安装Office使用EPPlus生成带图表的Excel报表之欧阳育创编_第2页
在.NET中不安装Office使用EPPlus生成带图表的Excel报表之欧阳育创编_第3页
在.NET中不安装Office使用EPPlus生成带图表的Excel报表之欧阳育创编_第4页
在.NET中不安装Office使用EPPlus生成带图表的Excel报表之欧阳育创编_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

欧阳育创编欧阳育创编2021.02.04 欧阳育创编2021.02.04欧阳育创编欧阳育创编2021.02.04 欧阳育创编2021.02.04欧阳育创编欧阳育创编2021.02.04 欧阳育创编2021.02.04欧阳育创编欧阳育创编2021.02.04 欧阳育创编2021.02.04在.NET中不安装Office使用EPPIus生成带图表(Chart)的Excel扌艮表创作:欧阳育时间:2021.02.04创作:欧阳育在开发.NET应用中可能会遇到需要生成带图表(Chart)的Excel报表的需求,特别是在一些ASP.NET网站中,有时候我们并不能保证Web服务器上一定安装了Office组件,所以使用微软的Office来生成Excel并不保证在所有情况下都使用,有时候即使Web服务器上安装了Office也会出现一些运行权限方面的原因到导致调用Excel组件生成Excel失败,所以在这里介绍一种无需安装Office并且无需较高权限就能生成Excel的方法。EPPIus简介在介绍EPPIus之前,首先要介绍一下OfficeOpenXMLO以下文字来自于维基百科(网址:/wiki/Office_Open_XML,有删节):OfficeOpenXML(缩写:OpenXML、OpenXML或OOXML),是由Microsoft开发的一种以XML为基础并以ZIP格式压缩的电子文件,支持WordsExcel、OfficeNote.PPT等文件格式。OOXML在2006年12月成为了ECMA规范的一部分,编号为ECMA-376;并于2008年4月国际标准化组织(ISO)的表決,在两个月公布为ISO/IEC29500国际标准。从MicrosoftOffice2007开始,OfficeOpenXML文件格式已经成为MicrosoftOffice默认的文件格式。MicrosoftOffice2010支持对ECMA-376标准文档的读操作,ISO/IEC29500Transitional的读/写,ISO/IEC29500Strict的读取。MicrosoftOffice2013同时支持ISO/IEC29500Strict的读写操作。EPPIus就是一个通过OpenXML方式来读写Office文件的开源.NET类库,所以使用它生成Office文件完全不需要MicrosoftOffice(当然如果你需需要查看生成的文件就需要OfficeT)o它的官方网址是:。如果需要体验本文中提到的效果,需要从这个网址下载最新版本的类库,我现在使用的这个名为EPPIus.dll类库仅658K,非常方便部署。代码示例为了演示EPPIus的用法,这里写了一个简单的例子,在这个例子里演示模拟了几大公司实际业绩与计划业绩的百分比,如果这个百分比大于95%则会将所在的单元格显示为绿色,如果小于90%则会显示为红色,否则就显示为黄色,并且还会生成一个图标来直观表示每月实际完成情况与计划的百分比。完整代码如下:/*******************未*******************************未*****************************★ProjectAreportprojectModuleNameExcelReportAuthorZhou,Jin-Qiao(周金桥)CreationDate[11/03/2013]Description GenerateExcelReportwithChatdemobyEpplus*©Copyright2013zhoufoxcn.★*********************************************************************************/usingSystem;usingSystem.Data;usingSystem.Drawing;usingSystem.IO;usingOfficeOpenXml;usingOfficeOpenXml.Drawing.Chart;usingOfficeOpenXml.Style;namespaceExcelReportApplication{///<summary>///使用EPPIus生成带图表(Chart)的Excel文件的例子,注意在运行的机器上无需安装Office,因为EPPIus是使用基于OpenXML技术生成的Excel文件。///任何网站和个人均可在不对本代码做任何修改的情况下转载本文及本文中示例的代码用于非商业用途,任何除去版权的行为均为侵权。///作者:周公(周金桥)///创建日期:2013-11-03III博客地址:/zhoufoxcnhttp://zhoufoxcIII新浪微博地址:/zhoufoxcnpublicclassExcelExportPage{privatestaticreadonlyst「ing[]MonthNames二newstringD{”一月”,”二月:”三月”,”四月”,"五月“,”六月”,“七月“,”八月”,”九月“,“十月”,”十_月“,”十二月*'};//privatestaticreadonlystringQCommpanyNames二newstringO{"Microsoft;"IBM","Oracle","Amazon”,"Google”,”Facebook”,“Twitter”,Taypal","Yahoo”,"HP"};privatestaticreadonlystringQCommpanyNames=newstring!]{HMicrosoft;"IBM",•'Oracle;"Google'•/Yahoo;"HP"};staticvoidMain(stringQargs){ExcelExportPage.GenelateExceIRepo「t();}///<summary>///周公(周金桥)说明:这个方法就是主要演示如何生成带图表(Chart)的Excel文件的例子III</summary>publicstaticvoidGenerateExceIReport(){stringfileName二"ExcelReport-,,+DateTime.Now.ToString(,,yyyy_MM_dd_HHmmss")+".xlsx";stringreportTitle二"2013年度五大公司实际情况与原计划的百分比“;Fileinfofile二newFilelnfo("C:\\M+fileName);using(ExcelPackagepackage二newExcelPackage(file)){ExcelWorksheetworksheet二null;ExcelChartSeriechartSerie二null;ExcelLineChartchart二null;#regionresearchTOC\o"1-5"\h\zworksheet 二package.Workbook.Worksheets.Add("DataM);DataTabledataPercent=GetDataPercent();//chart 二Worksheet.Drawings.AddChart(,,ColumnStackedChart,,>eChartType.Line)asExcelLineChart;chart 二worksheet.Drawings.AddChart(MColumnStackedChart,,JeChartType.LineMarkers)asExcelLineChart;//设置图表样式chart.Legend.Position二eLegendPosition.Right;chart.Legend.Add();chart.Title.Text=reportTitle;//设置图表的名称//chart.SetPosition(200,50);//设置图表位置chart.SetSize(800,400);//设置图表大小chart.ShowHiddenData二true;//chart.YAxis.MinorUnit=1;chart.XAxis.MinorUnit=1;//设置X轴的最小刻度//chart.DataLabel.ShowCategory=true;chart.DataLabel.ShowPercent=true;//显示百分欧阳育创编欧阳育创编2021.02.04 欧阳育创编2021.02.04}欧阳育创编}欧阳育创编2021.02.04 欧阳育创编2021.02.04欧阳育创编欧阳育创编2021.02.04 欧阳育创编2021.02.04}欧阳育创编}欧阳育创编2021.02.04 欧阳育创编2021.02.04〃设置月份for(intcol二1;col<=dataPercent.Columns.Count;col++){worksheet.Cells[l, col].Value =dataPercent.Columns[col-l].ColumnName;}〃设置数据for(introw=1;row<=dataPercent.Rows.Count;row++){for(intcol= 1;col<=dataPercent.Columns.Count;col++){stringstrValue=dataPercent.Rows[row-l][col-l].ToString();if(col二二1){worksheet.Cells[row+1,col].Value=strValue;欧阳育创编欧阳育创编2021.02.04 欧阳育创编2021.02.04}欧阳育创编}欧阳育创编2021.02.04 欧阳育创编2021.02.04欧阳育创编欧阳育创编2021.02.04 欧阳育创编2021.02.04欧阳育创编欧阳育创编2021.02.04 欧阳育创编2021.02.04else{TOC\o"1-5"\h\zdouble realValue =double.Parse(strValue);worksheet.Cells[row + 1,col].Style.Fill.PatternType二ExcelFillStyle.Solid;worksheet.Cells[row + 1,col].Style.Numberformat.Format="#0\\.00%";〃设置数据的格式为百分比worksheet.Cells[row+1,col].Value=realValue;if(realValue<0.90d)//如果小于90%则该单元格底色显示为红色{worksheet.Cells[row + 1,col].Style.Fill.BackgroundColor.SetColor(Color.Red);}elseif(realValue>=0.90d&&realValuev二0.95d)//如果在9096与95%之间则该单元格底色显示为黄色{worksheet.Cells[row + 1,col].Style.Fill.BackgroundColor.SetColor(Color.Yellow);}else{worksheet.Cells[row + 1,col].Style.Fill.BackgroundColor.SetColor(Color.Green);〃如果大于95%则该单元格底色显示为绿色}}}TOC\o"1-5"\h\z//chartSerie 二chart.Series.Add(worksheet.Cells[,,A2:M2,,]Jworksheet.Cells[MBl:Mlw]);//chartSerie.HeaderAddress 二worksheet.Cells["A2M];//chart.Series.Add()方法所需参数为:chart.Series.Add(X轴数据区,Y轴数据区)chartSerie 二chart.Series.Add(worksheet.Cells[row+1,2,row+1,2+dataPercent.Columns.Count-2],worksheet.Cells["Bl:Ml,,J);chartSerie.HeaderAddress =worksheet.Cells[row+1,1];〃设置每条线的名称〃因为假定每家公司至少完成了80%以上,所以这里设置Y轴的最小刻度为80%,这样使图表上的折线更清晰chart.YAxis.MinValue二0.8d;//chart.SetPosition(200,50);//可以通过制定左上角坐标来设置图表位置〃通过指定图表左上角所在的行和列及对应偏移来指定图表位置〃这里CommpanyNames.Length+1及3分别表示行和列chart.SetPosition(CommpanyNames.Length+1,10,3,20);#endregion『esearchpackage.Save();〃保存文件}}III<summary>///生成数据,由于这一步不是主要逻辑,所以采用随机生成数据的方式,实际中可根据需要从数据库或其它数据源中读取需要的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论