C#使用DoddleReport快速生成报表
作者:天方 时间:2022-05-31 06:39:59
有的时候,我们需要对一堆数据进行统计分析后生成HTML或Excel格式报表。本来这并不是一件很难的事,但确是件比较麻烦的事情。最令人头痛的是遇到领导下发的临时紧急任务的时候,往往领导都不知道到底要什么报表,只是给你一堆数据先让你出一个分析报告,当你上缴分析报告后,领导会针对分析结果让你再出一个分析报告… 。这时要是有一个快速生成报表的工具就非常方便了。
使用nuget安装控件
-install package DoddleReport
-install package DoddleReport.iTextSharp
现在,我们可以通过DoddleReport来快速生成报表。一个简单的示例如下:
假定我们的数据对象为如下格式:
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; }
}
数据源通如下函数生成:
static IEnumerable<Product> GetAllData()
{
var rand = new Random();
return Enumerable.Range(1, 20).Select(
i => new Product
{
Id = i,
Name = "Product " + i,
Description = "This is an example description",
Price = rand.NextDouble() * 100,
OrderCount = rand.Next(1000),
LastPurchase = DateTime.Now.AddDays(rand.Next(1000)),
UnitsInStock = rand.Next(0, 2000)
});
}
要对该数据源生成报表,则只需要如下几步:
1. 通过ToReportSource扩展函数将数据源转换为Report对象
// Create the report and turn our query into a ReportSource
var report = new Report(GetAllData().ToList().ToReportSource());
2. 添加报表的标题和页眉页脚的描述
// Customize the Text Fields
report.TextFields.Title = "Products Report";
report.TextFields.SubTitle = "This is a sample report showing how Doddle Report works";
report.TextFields.Footer = "Copyright 2011 © The Doddle Project";
report.TextFields.Header = string.Format(@" Report Header Demo");
// Render hints allow you to pass additional hints to the reports as they are being rendered
report.RenderHints.BooleanCheckboxes = true;
3. 对输出的字段进行格式控制
// Customize the data fields
report.DataFields["Id"].Hidden = true;
report.DataFields["Price"].DataFormatString = "{0:c}";
report.DataFields["LastPurchase"].DataFormatString = "{0:d}";
4. 输出为报表
using (var outputStream = File.Create(@"r:\report.html"))
{
var writer = new DoddleReport.Writers.HtmlReportWriter();
writer.WriteReport(report, outputStream);
}
这样,我们就可以得到如下的报表:
使用起来非常简单,但基本上该有的都有,还是非常不错的。其中2,3两步是可以省略的,最简单的方式下,只要如下几行即可:
// Create the report and turn our query into a ReportSource
var report = new Report(GetAllData().ToList().ToReportSource());
using (var outputStream = File.Create(@"r:\report.html"))
{
var writer = new DoddleReport.Writers.HtmlReportWriter();
writer.WriteReport(report, outputStream);
}
值得一提的是,DoddleReport支持的输出给事非常丰富:PDF、EXCEL、HTML、CSV等常用的格式都支持,也能直接在Asp.net中输出成在线报表。例如,我们只要把上面例子中的"Writers.HtmlReportWriter"改成"OpenXml.ExcelReportWriter"就可以生成Excel格式的报表,非常强大而方便。
来源:https://www.cnblogs.com/TianFang/archive/2013/06/09/3130239.html
标签:C#,DoddleReport,生成,报表
0
投稿
猜你喜欢
Mybatis判断空字符串的问题
2022-11-18 02:07:00
详解Java包装类及自动装箱拆箱
2023-11-14 21:13:23
VScode 打造完美java开发环境最新教程
2023-02-24 16:02:10
Springboot整合log4j2日志全解总结
2021-12-27 22:56:58
新手了解java 数组基础知识
2023-10-22 03:19:12
MyBatis学习教程(五)-实现关联表查询方法详解
2021-06-23 21:04:04
Android利用属性动画实现优酷菜单
2022-06-15 13:16:44
C# Random类随机函数实例详解
2021-09-12 04:26:42
C#数组学习相关资料整理
2022-12-03 08:02:54
为何Java8需要引入新的日期与时间库
2023-12-16 06:02:23
Recyclerview添加头布局和尾布局、item点击事件详解
2022-04-19 12:38:12
Feign远程调用Multipartfile参数处理
2022-09-22 02:46:24
Java使用POI导出Excel(二):多个sheet
2022-11-26 02:09:44
mybatis根据表逆向自动化生成代码的实现
2023-03-12 15:39:02
C# 静态变量与静态方法实例研究
2023-04-23 04:26:00
Java继承方法重写实现原理及解析
2021-12-31 16:35:54
常见Android编译优化问题梳理总结
2021-08-17 11:21:48
Eclipse最新版使用过程中遇到的问题总结
2023-12-03 04:14:14
C# 使用 Castle 实现 AOP及如何用 Autofac 集成 Castle
2023-07-08 16:02:26
Java实现线程同步方法及原理详解
2021-07-29 21:28:13