将数据导出为Excel报表是个老生常谈的话题了。但是在项目组新人过多,项目中又存在大量Excel报表时,各种各样的问题就出来了~~~
其实对于绝大部分场景来讲,作成Excel时只要定义好模板文件然后填充数据就行了。于是为了降低新人的出错率,简化开发,写了个通用基类,作成一个报表只要像下面的代码这样简单继承一下基类就可以了。

using System;
using System.Data;
using Lee.Library.Reports.Office.Excel;

namespace Lee.Sample.Reports.Office.Excel
{
public class SampleReport : BaseReport< DataSet>
{
public SampleReport(DataSet ds) : base(ds) { }

protected override void InitReport()
{
this.ReportName = @"UserInfo";
this.ReportSavePath = AppDomain.CurrentDomain.BaseDirectory + @"Reports\Office\Excel\";
this.Excel = new WorkBook(AppDomain.CurrentDomain.BaseDirectory + @"Reports\Office\Excel\UserInfo.xls", "UserInfo");
this.Excel.Sheets.Add(new WorkSheet("MyUserInfo"));
for (int i = 0; i < this.DataSource.Tables[0].Rows.Count; i++)
{
DataRow dr = this.DataSource.Tables[0].Rows[i];
this.Excel.Sheets[0].Add(new WorkCell("B" + (i + 3).ToString(), dr.Field< string>("ID")));
this.Excel.Sheets[0].Add(new WorkCell("C" + (i + 3).ToString(), dr.Field< string>("NAME")));
}
}
}
}

代码比较简单,附有调用示例,有兴趣的同学可以做进一步扩展调整
下载地址如下:http://files.cnblogs.com/boylee/ExcelReport.zip

PS:发现SyntaxHighlighter对C#泛型的着色时有错误,只好加个空格~

Back