当前位置: 首页 > 编程语言 > C#

EPPlus数据透视表-图表分享

时间:2023-04-10 19:28:59 C#

EPPlus数据透视表/图表我使用EPPlusfor.net有一段时间了,但只用于简单的数据操作。是否有任何示例说明如何使用它来创建数据透视表/图表?它似乎支持它,因为我可以在智能感知中看到数据透视表,但不确定语法。我只能在提供的示例中找到饼图/条形图。我从蒂姆的回答中想出了一个类似的解决方案。首先,我定义了一个简单的接口,用作导出方法的一部分:相关项目字符串pivotRangeName);//工作簿中的命名范围是指数据}然后我实现了一个简单的类,其中包含变量值和过程代码来完成这项工作:publicclassSimplePivotTable:IPivotTableCreator{List_GroupByColumns;列出_SummaryColumns;//////构造函数///publicSimplePivotTable(string[]groupByColumns,string[]summaryColumns){_GroupByColumns=newList(groupByColumns);_SummaryColumns=新列表(summaryColumns);}//////在Excel中构建简单数据透视表的回调处理程序///http://stackoverflow.com/questions/11650080/epplus-pivot-tables-charts///publicvoidCreatePivotTable(OfficeOpenXml.ExcelPackagepkg,stringtableName,stringpivotRangeName){stringpageName="Pivot-"+tableName.Replace("","");}varwsPivot=pkg.工作簿。Worksheets.Add(页面名称);pkg.Workbook.Worksheets.MoveBefore(PageName,tableName);vardataRange=pkg.Workbook./*Worksheets[tableName].*/Names[pivotRangeName];varpivotTable=wsPivot.PivotTables.Add(wsPivot.Cells["C3"],dataRange,"Pivot_"+tableName.Replace("",""));pivotTable.ShowHeaders=true;pivotTable.UseAutoFormatting=true;pivotTable.ApplyWidthHeightFormats=true;pivotTable.ShowDrill=true;pivotTable.FirstHeaderRow=1;//第一行有标题pivotTable.FirstDataCol=1;//数据的第一列pivotTable.FirstDataRow=2;//第一行数据foreach(stringrowin_GroupByColumns){varfield=pivotTable.Fields[row];pivotTable.RowFields.Add(字段);field.Sort=eSortType.Ascending;}foreach(_SummaryColumns中的字符串列){varfield=pivotTable.Fields[column];ExcelPivotTableDataField结果=pivotTable.DataFields.Add(字段);}pivotTable.DataOnRows=false;然后我创建了一个SimplePivotTable创建者类的实例:IPivotTableCreatorptCreator=newSimplePivotTable(newstring[]{"OrganizationTitle","GroupingTitle","DetailTitle"},/*可折叠行*/newstring[]{"Baseline","Increase","Decrease","NetChange",“当前计数”});/*summarycolumns*/我有第三个类,目前公开了六种不同的方法,用于获取一个或多个数据集(通常是List对象)并将每个数据集转换为Foradataworksheetwithnamedrangesofdata现在,我正在调整这些导出方法允许我为任何/所有它们生成数据透视表。他们都这样做:OfficeOpenXml.ExcelPackagepkg=newExcelPackage();ExportCollectionToExcel(pkg,表名,数据集);//创建填充数据的工作表//创建数据的命名范围ptCreator.CreatePivotTable(pkg,tableName,GetPivotRangeName(tableName));通过使用界面,我有更多的机会(我认为),例如,为多个工作表生成不同的数据透视表。我的基本SimplePivotTable类仅适用于具有某些特定假设的单个表,但将配置数据放入键入表名的字典中并不太难。希望能帮助别人。这是我最近创建的一个数据透视表的代码,也许它真的有帮助:以上是C#学习教程:EPPlusPivotTable/Chart分享的全部内容,如果对大家有用还需要进一步了解C#学习教程,希望大家多多关注——DataTabletable=getDataSource();FileInfofileInfo=newFileInfo(路径);varexcel=newExcelPackage(文件信息);varwsData=excel.Workbook.Worksheets.Add("Data-Worksheetname");varwsPivot=excel.Workbook.Worksheets.Add("Pivot-Worksheetname");wsData.Cells["A1"].LoadFromDataTable(table,true,OfficeOpenXml.Table.TableStyles.Medium6);if(table.Rows.Count!=0){foreach(DataColumncolintable.Columns){//以德语格式格式化所有日期(相应调整)if(col.DataType==typeof(System.DateTime)){varcolNumber=col.Ordinal+1;varrange=wsData.Cells[2,colNumber,table.Rows.Count+1,colNumber];range.Style.Numberformat.Format="dd.MM.yyyy";}}}vardataRange=wsData.Cells[wsData.Dimension.地址.ToString()];数据范围.AutoFitColumns();varpivotTable=wsPivot.PivotTables.Add(wsPivot.Cells["A3"],dataRange,"Pivotname");pivotTable.MultipleFieldFilters=true;pivotTable.RowGrandTotals=true;pivotTable.ColumGrandTotals=true;pivotTable.Compact=true;pivotTable.CompactData=true;pivotTable.GridDropZones=false;pivotTable.Outline=false;pivotTable.OutlineData=false;pivotTable.ShowError=true;pivotTable.ErrorCaption="[error]";pivotTable.ShowHeaders=true;pivotTable.UseAutoFormatting=true;pivotTable.ApplyWidthHeightFormats=true;pivotTable.ShowDrill=true;pivotTable.FirstDataCol=3;pivotTable.RowHeaderCaption=“声明”;varmodelField=pivotTable.Fields[“模型”];pivotTable.PageFields.Add(modelField);modelField.Sort=OfficeOpenXml.Table.PivotTable.eSortType.Ascending;varcountField=pivotTable.Fields[“声明”];pivotTable.DataFields.Add(countField);varcountryField=pivotTable.Fields["Country"];pivotTable.RowFields.Add(countryField);vargspField=pivotTable.Fields["GSP/DRSL"];pivotTable.RowFields。添加(gspField);变老StatusField=pivotTable.Fields["旧状态"];pivotTable.ColumnFields.Add(oldStatusField);varnewStatusField=pivotTable.Fields["新状态"];pivotTable.ColumnFields.Add(newStatusField);varsubmittedDateField=pivotTable.Fields["声明提交日期"];pivotTable.RowFields.Add(submittedDateField);submittedDateField.AddDateGrouping(OfficeOpenXml.Table.PivotTable.eDateGroupBy.Months|OfficeOpenXml.Table.PivotTable.eDateGroupBy.Days);varmonthGroupField=pivotTable.Fields.GetDateGroupFieldOfficeOpenXml.Table.PivotTable.eDateGroupBy.Months);monthGroupField.ShowAll=false;vardayGroupField=pivotTable.Fields.GetDateGroupField(OfficeOpenXml.Table.PivotTable.eDateGroupBy.Days);dayGroupField.ShowAll=false;excel.保存();整理自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处: