ExcelReport第一篇:使用ExcelReport導出Excel


導航

目   錄:基於NPOI的報表引擎——ExcelReport

下一篇:ExcelReport源碼解析

概述

本篇將通過導出學生成績的示例演示“使用ExcelReport導出Excel”的步驟。

 

示例(導出學生成績明細)

步驟一:設計Excel模板

首先,使用Excel軟件設計模板(我沒有安裝MSOffice,用LibreOffice Calc做的演示)。在模板中要填充數據的位置用$[ParameterName]代替。

image

步驟二:生成模板填充規則文件

使用模板填充規則文件生成工具(ERTool)為步驟一設計的Excel模板生成填充規則文件。

image

步驟三:為模板填充數據

 

實現代碼(導出到本地):

//實例化一個參數容器,並加載模板填充規則文件
ParameterCollection collection = new ParameterCollection();
collection.Load(@"Template\Template.xml");
 
//實例化一個元素格式化器列表
List<ElementFormatter> formatters = new List<ElementFormatter>();
formatters.Add(new CellFormatter(collection["GradeDetail", "Dept"], "某某學院"));   //添加一個單元格格式化器
formatters.Add(new CellFormatter(collection["GradeDetail", "Class"], "某某班級"));
formatters.Add(new CellFormatter(collection["GradeDetail", "StudNo"], "2009*****"));
formatters.Add(new CellFormatter(collection["GradeDetail", "StudName"], "韓兆新"));
formatters.Add(new CellFormatter(collection["GradeDetail", "ExportDate"], DateTime.Now));
 
List<GradeInfo> gradeInfoList = new List<GradeInfo>();
gradeInfoList.Add(new GradeInfo() { CGPA = 18, CourseID = "KC-0001", CourseName = "高等數學", CourseType = "理論課", Credit = 6, EvaluationMode = "考試", GainCredit = 6, GPA = 3, Grade = 86, StudyNature = "初修", Type = "必修課" });
gradeInfoList.Add(new GradeInfo() { CGPA = 2, CourseID = "KC-0002", CourseName = "計算機應用基礎", CourseType = "理論課", Credit = 2, EvaluationMode = "考試", GainCredit = 2, GPA = 1, Grade = 93, StudyNature = "初修", Type = "必修課" });
gradeInfoList.Add(new GradeInfo() { CGPA = 9, CourseID = "KC-0003", CourseName = "C程序設計", CourseType = "理論課", Credit = 3, EvaluationMode = "考試", GainCredit = 3, GPA = 3, Grade = 97, StudyNature = "初修", Type = "必修課", Remark = "備注信息" });
 
//添加一個Table格式化器
formatters.Add(new TableFormatter<GradeInfo>(collection["GradeDetail", "CourseID"].X, gradeInfoList,
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "CGPA"].Y, t => t.CGPA),
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "CourseID"].Y, t => t.CourseID),
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "CourseName"].Y, t => t.CourseName),
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "CourseType"].Y, t => t.CourseType),
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "Credit"].Y, t => t.Credit),
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "EvaluationMode"].Y, t => t.EvaluationMode),
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "GainCredit"].Y, t => t.GainCredit),
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "GPA"].Y, t => t.GPA),
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "Grade"].Y, t => t.Grade),
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "Remark"].Y, t => t.Remark),
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "StudyNature"].Y, t => t.StudyNature),
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "Type"].Y, t => t.Type)
    ));
//導出文件到本地
Export.ExportToLocal(@"Template\Template.xls", saveFileDlg.FileName,
    new SheetFormatterContainer("GradeDetail", formatters));

實現代碼(導出到Web):

//實例化一個參數容器,並加載模板填充規則文件
ExcelReport.ParameterCollection collection = new ExcelReport.ParameterCollection();
collection.Load(Server.MapPath(@"Template\Template.xml"));
 
//實例化一個元素格式化器列表
List<ElementFormatter> formatters = new List<ElementFormatter>();
formatters.Add(new CellFormatter(collection["GradeDetail", "Dept"], "某某學院"));   //添加一個單元格格式化器
formatters.Add(new CellFormatter(collection["GradeDetail", "Class"], "某某班級"));
formatters.Add(new CellFormatter(collection["GradeDetail", "StudNo"], "2009*****"));
formatters.Add(new CellFormatter(collection["GradeDetail", "StudName"], "韓兆新"));
formatters.Add(new CellFormatter(collection["GradeDetail", "ExportDate"], DateTime.Now));
 
List<GradeInfo> gradeInfoList = new List<GradeInfo>();
gradeInfoList.Add(new GradeInfo() { CGPA = 18, CourseID = "KC-0001", CourseName = "高等數學", CourseType = "理論課", Credit = 6, EvaluationMode = "考試", GainCredit = 6, GPA = 3, Grade = 86, StudyNature = "初修", Type = "必修課" });
gradeInfoList.Add(new GradeInfo() { CGPA = 2, CourseID = "KC-0002", CourseName = "計算機應用基礎", CourseType = "理論課", Credit = 2, EvaluationMode = "考試", GainCredit = 2, GPA = 1, Grade = 93, StudyNature = "初修", Type = "必修課" });
gradeInfoList.Add(new GradeInfo() { CGPA = 9, CourseID = "KC-0003", CourseName = "C程序設計", CourseType = "理論課", Credit = 3, EvaluationMode = "考試", GainCredit = 3, GPA = 3, Grade = 97, StudyNature = "初修", Type = "必修課", Remark = "備注信息" });
 
//添加一個Table格式化器
formatters.Add(new TableFormatter<GradeInfo>(collection["GradeDetail", "CourseID"].X, gradeInfoList,
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "CGPA"].Y, t => t.CGPA),
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "CourseID"].Y, t => t.CourseID),
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "CourseName"].Y, t => t.CourseName),
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "CourseType"].Y, t => t.CourseType),
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "Credit"].Y, t => t.Credit),
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "EvaluationMode"].Y, t => t.EvaluationMode),
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "GainCredit"].Y, t => t.GainCredit),
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "GPA"].Y, t => t.GPA),
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "Grade"].Y, t => t.Grade),
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "Remark"].Y, t => t.Remark),
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "StudyNature"].Y, t => t.StudyNature),
    new TableColumnInfo<GradeInfo>(collection["GradeDetail", "Type"].Y, t => t.Type)
    ));
//導出文件到Web
Export.ExportToWeb(Server.MapPath(@"Template\Template.xls"), "GradeDetail",
    new SheetFormatterContainer("GradeDetail", formatters));

導出文件截圖:

image

 

源碼下載:

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM