C#使用DoddleReport快速生成报表

 更新时间:2022年06月20日 09:56:48   作者:天方  
这篇文章介绍了C#使用DoddleReport快速生成报表的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

有的时候,我们需要对一堆数据进行统计分析后生成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 &copy; 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格式的报表,非常强大而方便。

到此这篇关于C#使用DoddleReport快速生成报表的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C#框架winform实现简单点餐系统

    C#框架winform实现简单点餐系统

    这篇文章主要为大家详细介绍了C#框架winform实现简单点餐系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • VS2012 程序打包部署图文详解

    VS2012 程序打包部署图文详解

    VS2012虽然没有集成打包工具,但它为我们提供了下载的端口,需要我们手动安装一个插件InstallShield。网上有很多第三方的打包工具,但为什么偏要使用微软提供的呢
    2016-12-12
  • 快速了解c# 常量

    快速了解c# 常量

    这篇文章主要介绍了c# 常量的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • C#判断上传文件是否是图片以防止木马上传的方法

    C#判断上传文件是否是图片以防止木马上传的方法

    这篇文章主要介绍了C#判断上传文件是否是图片以防止木马上传的方法,对于网络安全来说至关重要,需要的朋友可以参考下
    2014-07-07
  • 解析C#中委托的同步调用与异步调用(实例详解)

    解析C#中委托的同步调用与异步调用(实例详解)

    本篇文章是对C#中委托的同步调用与异步调用进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C#中的预定义类型与引用类型

    C#中的预定义类型与引用类型

    这篇文章介绍了C#中的预定义类型与引用类型,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • C#执行存储过程并将结果填充到GridView的方法

    C#执行存储过程并将结果填充到GridView的方法

    这篇文章主要介绍了C#执行存储过程并将结果填充到GridView的方法,结合实例形式分析了C#存储过程操作及GridView控件相关操作技巧,需要的朋友可以参考下
    2017-02-02
  • C#实现简单播放mp3的方法

    C#实现简单播放mp3的方法

    这篇文章主要介绍了C#实现简单播放mp3的方法,涉及C#播放多媒体文件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • c#接口使用示例分享

    c#接口使用示例分享

    接口与抽象类一样,也是表示某种规则,一旦使用了该规则,就必须实现相关的方法。对于C#语言而言,由于只能继承自一个父类,因此若有多个规则需要实现,则使用接口是个比较好的做法
    2014-02-02
  • Unity ScrollView实现无限循环效果

    Unity ScrollView实现无限循环效果

    这篇文章主要为大家详细介绍了Unity ScrollView实现无限循环效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07

最新评论