从 Linq Queries 快速生成数据 HTML, EXCEL, CSV 报表
2011-12-13 11:54
651 查看
在CodePlex 上经常可以发现一些好东西, 关键是有没有时间去淘宝.
前几天就发现一个, 并且在实际工作中使用了:
* DoddleReport
你有没有被要求基于来自数据库的数据,生成一个报表? 我们时不时会有类似的需求.
DoddleReport极大的简化了这方面的工作量.
首先你需要下载它的Dll 文件, 可以到 codeplex 中得到http://doddlereport.codeplex.com/
或者直接从这里下载: cnblogs下载地址
得到的是一样的文件, 将它解压到你的一个asp.net 网站的bin目录下. 你就可以引用Doddle的类了.
我们来模拟一个场景(本场景是根据DoddleReport提供的sample 代码改编的):
创建一个aspx页面, 加入下面的代码:
创建一个Product 类:
随机生成1000个Product的数据, 方便我们测试结果:
[/code]
下面我们要用到DoddleReport的类:
protected void Page_Load(object sender, EventArgs e)
{
// Get the data for the report (any IEnumerable will work)
var query = GetAll();
// Create the report and turn our query into a ReportSource
var report = new Report(query.ToReportSource());
// Customize the Text Fields
report.TextFields.Title = "报告的标题";
report.TextFields.SubTitle = "副标题";
report.TextFields.Footer = "页脚";
report.TextFields.Header = string.Format(@"制作时间: {0}", DateTime.Now);
// Render hints allow you to pass additional hints to the reports as they are being rendered
report.RenderHints.BooleanCheckboxes = true;
// Customize the data fields
report.DataFields["Id"].Hidden = true;
report.DataFields["Price"].DataFormatString = "{0:c}";
report.DataFields["LastPurchase"].DataFormatString = "{0:d}";
var writer = new HtmlReportWriter();
writer.WriteReport(report, Response.OutputStream);
}
首先用我们的数据生成一个Report的实例; 然后指定Report的一些属性, 例如标题, 页眉, 页脚(很酷,是吗). 再指定一些列的属性, 例如隐藏ID, 和给一些列特殊的格式.
最后调用ReportWriter将数据写出到页面.
下面是生成的截图:
![](http://images.cnblogs.com/cnblogs_com/multiplesoftware/201112/201112130527548342.jpg)
如果你要生成Excel 或者CSV(以逗号或者tab为分隔符的文件)可以简单的修改ReportWriter后面的代码为:
string s = Request.PhysicalApplicationPath;
var exWriter = new ExcelReportWriter();
exWriter.WriteReport(report, System.IO.File.Create(s + "fil7.xls"));
或者
var deWriter = new DelimitedTextReportWriter();
deWriter.WriteReport(report, System.IO.File.Create(s + "fil7.csv"));
可以看看效果:
![](http://images.cnblogs.com/cnblogs_com/multiplesoftware/201112/201112130527573688.jpg)
![](http://images.cnblogs.com/cnblogs_com/multiplesoftware/201112/20111213052801497.jpg)
希望可以帮助到有这方面需要的朋友们.
本文来自于喜乐的ASP.NET(Alex Song) 转贴请注明出处
前几天就发现一个, 并且在实际工作中使用了:
* DoddleReport
你有没有被要求基于来自数据库的数据,生成一个报表? 我们时不时会有类似的需求.
DoddleReport极大的简化了这方面的工作量.
首先你需要下载它的Dll 文件, 可以到 codeplex 中得到http://doddlereport.codeplex.com/
或者直接从这里下载: cnblogs下载地址
得到的是一样的文件, 将它解压到你的一个asp.net 网站的bin目录下. 你就可以引用Doddle的类了.
我们来模拟一个场景(本场景是根据DoddleReport提供的sample 代码改编的):
创建一个aspx页面, 加入下面的代码:
创建一个Product 类:
public class Product { public int Id { get; set; } public string Name { get; set; } public string Description { get; set; } public double Price { get; set; } public int OrderCount { get; set; } public DateTime LastPurchase { get; set; } public int UnitsInStock { get; set; } }
随机生成1000个Product的数据, 方便我们测试结果:
[code]public static List<Product> GetAll() { var rand = new Random(); return Enumerable.Range(1, 1000) .Select(i => new Product { Id = i, Name = "产品 " + i, Description = "描述...", Price = rand.NextDouble() * 100, OrderCount = rand.Next(1000), LastPurchase = DateTime.Now.AddDays(rand.Next(1000)), UnitsInStock = rand.Next(0, 2000) }) .ToList(); }
[/code]
下面我们要用到DoddleReport的类:
protected void Page_Load(object sender, EventArgs e)
{
// Get the data for the report (any IEnumerable will work)
var query = GetAll();
// Create the report and turn our query into a ReportSource
var report = new Report(query.ToReportSource());
// Customize the Text Fields
report.TextFields.Title = "报告的标题";
report.TextFields.SubTitle = "副标题";
report.TextFields.Footer = "页脚";
report.TextFields.Header = string.Format(@"制作时间: {0}", DateTime.Now);
// Render hints allow you to pass additional hints to the reports as they are being rendered
report.RenderHints.BooleanCheckboxes = true;
// Customize the data fields
report.DataFields["Id"].Hidden = true;
report.DataFields["Price"].DataFormatString = "{0:c}";
report.DataFields["LastPurchase"].DataFormatString = "{0:d}";
var writer = new HtmlReportWriter();
writer.WriteReport(report, Response.OutputStream);
}
首先用我们的数据生成一个Report的实例; 然后指定Report的一些属性, 例如标题, 页眉, 页脚(很酷,是吗). 再指定一些列的属性, 例如隐藏ID, 和给一些列特殊的格式.
最后调用ReportWriter将数据写出到页面.
下面是生成的截图:
![](http://images.cnblogs.com/cnblogs_com/multiplesoftware/201112/201112130527548342.jpg)
如果你要生成Excel 或者CSV(以逗号或者tab为分隔符的文件)可以简单的修改ReportWriter后面的代码为:
string s = Request.PhysicalApplicationPath;
var exWriter = new ExcelReportWriter();
exWriter.WriteReport(report, System.IO.File.Create(s + "fil7.xls"));
或者
var deWriter = new DelimitedTextReportWriter();
deWriter.WriteReport(report, System.IO.File.Create(s + "fil7.csv"));
可以看看效果:
![](http://images.cnblogs.com/cnblogs_com/multiplesoftware/201112/201112130527573688.jpg)
![](http://images.cnblogs.com/cnblogs_com/multiplesoftware/201112/20111213052801497.jpg)
希望可以帮助到有这方面需要的朋友们.
本文来自于喜乐的ASP.NET(Alex Song) 转贴请注明出处
相关文章推荐
- 从 Linq Queries 快速生成数据 HTML, EXCEL, CSV 报表
- 【struts2+hibernate+spring项目实战】数据报表jxl及生成excel(ssh项目实战)
- Velocity模板引擎实战:动态生成HTML、Word、Excel等报表
- asp.net导出excel-一行代码实现excel、xml、pdf、word、html、csv等7种格式文件导出功能而且美观-SNF快速开发平台
- 利用 LotusScript 实现用 Lotus Domino 的数据生成图形化的 Excel 报表
- 利用 LotusScript 实现用 Lotus Domino 的数据生成图形化的 Excel 报表
- Python实现导出数据生成excel报表的方法示例
- datagrid数据导出到excel文件给客户端下载的几种方法 (xls,csv,html)
- 数据字典生成工具(生成Excel, Word,PDF,html)
- datagrid数据导出到excel文件给客户端下载的几种方法 (xls,csv,html)
- jasperreport生成html,Excel,PDF报表,数据源使用List
- python生成每日报表数据(Excel)并邮件发送
- 使用HTML,CSS快速导出数据到Excel数据格式化问题
- 如何用C++将Oracle数据定期生成Excel报表
- 使用HTML,CSS快速导出数据到Excel(转)
- 使用HTML,CSS快速导出数据到Excel
- 超级简单报表导出方案,如何用XML Publisher在eclipse中生成excel,pdf,html
- Excel数据导入数据库的SQL快速生成
- Excel调用已有数据利用已经录入的项快速的生成下拉列表
- 利用 LotusScript 实现用 Lotus Domino 的数据生成图形化的 Excel 报表