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快速生成报表的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C# 创建报表过程详解

    1.新建windows窗体,项目-->添加新项-->Visual C#项-->Windows Form-->windows窗体. 2.窗体中加入button按钮和报表控件. 3.新建报表,项目-->添加新项-->reporting-->报表,生成.rdlc文件. 4.在.rdlc上插入表格-->新建数据源-->数据库-->数据集-->新建连接,步骤如下: 5.这里输入数据库连接的服务器名,登录数据库的用户名和密码,选择数据库名称. 6.选择

  • C#中把FastReport.Net报表控件的数据保存到数据库

    通常报表都存储在一个地方,但是在单独的文件中.随着文件数量的增加在结构和搜索上也困难多多,针对这个问题,我遇到了一个非常有趣的报表对象属性——ReportSourceString,此属性以字符串形式保存整个报表模板.这意味着它可以在任何数据库中存储报表模板,并把所有的报表都存储在一个地方.为了将报表保存到数据库中,我们需要编写自己的方法来保存和加载报表.下面就开始吧!首先,让我们创建一个数据库来存储报表.我已经使用了微软的访问.该表的结构如下: 创建窗体应用程序.添加连接到数据库.放置按钮组件到

  • C#在Winform开发中使用Grid++报表

    之前一直使用各种报表工具,如RDLC.DevExpress套件的XtraReport报表,在之前一些随笔也有介绍,最近接触锐浪的Grid++报表,做了一些测试例子和辅助类来处理报表内容,觉得还是很不错的,特别是它的作者提供了很多报表的设计模板案例,功能还是非常强大的.试着用来做一些简单的报表,测试下功能,发现常规的二维表.套打.条形码二维码等我关注的功能都有,是一个比较强大的报表控件,本篇随笔主要介绍在Winform开发中使用Grid++报表设计报表模板,以及绑定数据的处理过程. 1.报表模板设

  • C#利用ReportViewer生成报表

    本文主要是利用微软自带的控件ReportViewer进行报表设计的小例子,具体内容如下 涉及知识点: ReportViewer :位于Microsoft.Reporting.WinForms命名空间, 主要用于报表的显示 Report:报表,以rdlc结尾的文件,可视化设计报表模板. 报表数据:内置字段,参数,图像,数据集(本报表主要使用参数,和数据集) ReportParameter:使用名称和值实例化新的报表参数 ReportDataSource:报表的数据源与DataTable对象联系起来

  • C#使用doggleReport生成pdf报表的方法

    本文实例讲述了C#使用doggleReport生成pdf报表的方法.分享给大家供大家参考,具体如下: 1. 安装nuget -install package DoddleReport -install package DoddleReport.iTextSharp 2. 实例代码 static void Main(string[] args) { var query = GetAll(); var report = new Report(query.ToReportSource()); repo

  • C#使用DoddleReport快速生成报表

    有的时候,我们需要对一堆数据进行统计分析后生成HTML或Excel格式报表.本来这并不是一件很难的事,但确是件比较麻烦的事情.最令人头痛的是遇到领导下发的临时紧急任务的时候,往往领导都不知道到底要什么报表,只是给你一堆数据先让你出一个分析报告,当你上缴分析报告后,领导会针对分析结果让你再出一个分析报告… .这时要是有一个快速生成报表的工具就非常方便了. 使用nuget安装控件 -install package DoddleReport -install package DoddleReport.

  • javascript操作excel生成报表全攻略

    最近做一个项目,用到了javascript操纵excel以生成报表,下面是标有详细注解的实例 复制代码 代码如下: <html> <head> <script language="javascript" type="text/javascript"> </script><script language="javascript" type="text/javascript"&

  • 从零开始学YII2框架(五)快速生成代码工具 Gii 的使用

    Yii2 框架 之所以称之为高效快速开发的一款框架,是因为有一个神奇的工具Gii 用过Yii1框架的Coder都知道,Gii可以为你快速生成代码,也就是说搭建一个可以增删改查的WebApp可能一行代码都不用写. 当然作为Coder,不写代码怎么能实现我们想要的功能呢. 上次介绍了如何安装Yii框架,本次介绍一下如何使用gii工具快速实现CRUD功能. 框架安装完成后可以通过如下链接访问Gii工具 http://localhost/yii2test/backend/web/index.php?r=

  • shell脚本实现快速生成xml格式sitemap实例分享

    用shell快速生成xml格式的sitemap地图文件,中小型网站适用.在本次案例中,生成12053条URL的sitemap文件,仅用时4.3秒!shell代码如下: 复制代码 代码如下: cat sitemap.txt|awk 'BEGIN{print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset>"}{print "<url>\n<

  • BootstrapTable+KnockoutJS自定义T4模板快速生成增删改查页面

    前言:上篇介绍了下ko增删改查的封装,确实节省了大量的js代码.博主是一个喜欢偷懒的人,总觉得这些基础的增删改查效果能不能通过一个什么工具直接生成页面效果,啥代码都不用写了,那该多爽.于是研究了下T4的语法,虽然没有完全掌握,但是算是有了一个大致的了解.于是乎有了今天的这篇文章:通过T4模板快速生成页面. KnockoutJS系列文章: BootstrapTable与KnockoutJS相结合实现增删改查功能[一] BootstrapTable与KnockoutJS相结合实现增删改查功能[二]

  • PHP快速生成各种信息提示框的方法

    本文实例讲述了PHP快速生成各种信息提示框的方法.分享给大家供大家参考,具体如下: function ShowMsg($msg, $gourl, $onlymsg = 0, $limittime = 0) //系统提示信息 { /* *$msg 信息提示的内容 *$gourl 需要跳转的网址 *$onlymsg 1 表示不自动跳转 0表示自动跳转 *$limittime 跳转的时间 */ global $dsql, $cfg_ver_lang; if (eregi ( "^gb", $

  • 1分钟快速生成用于网页内容提取的xslt

    1分钟快速生成用于网页内容提取的xslt,具体内容如下 1.项目背景 在<Python即时网络爬虫项目说明>一文我们说过要做一个通用的网络爬虫,而且能节省程序员大半的时间,而焦点问题就是提取器使用的抓取规则需要快速生成.在python使用xslt提取网页数据一文,我们已经看到这个提取规则是xslt程序,在示例程序中,直接把一长段xslt赋值给变量,但是没有讲这一段xslt是怎么来的. 网友必然会质疑:这个xslt这么长,编写不是要花很长时间? 实际情况是,这个xslt是通过GooSeeker的

  • 使用apidocJs快速生成在线文档的实例讲解

    apidoc是一个轻量级的在线REST接口文档生成系统,支持多种主流语言,包括Java.C.C#.PHP和Javascript等.使用者仅需要按照要求书写相关注释,就可以生成可读性好.界面美观的在线接口文档. 本文主要包含以下内容: 1.介绍apidoc的基本概念 2.安装.使用和简单配置 3.一些特殊参数的含义及其使用 4.介绍一些使用经验 前言 apidoc能做什么? apidoc是一个轻量级的在线REST接口文档生成系统,可以根据其特定的规则的代码注释来生成静态网页.首先看下它生成的文档界

  • Python使用dict.fromkeys()快速生成一个字典示例

    本文实例讲述了Python使用dict.fromkeys()快速生成一个字典.分享给大家供大家参考,具体如下: >>> result = dict.fromkeys(range(24), 0) >>> result {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0, 10: 0, 11: 0, 12: 0, 13: 0, 14: 0, 15: 0, 16: 0, 17: 0, 18: 0, 19: 0

  • python 实现快速生成连续、随机字母列表

    0.摘要 本文介绍了生成连续和随机字母表的方法,用于快速生成大量字母数据. 主要使用chr()函数,将数字通过ASCII表转换为相应字母. 1.chr() 函数 chr() 用一个范围在 range(256)内的(就是0-255)整数作参数,返回一个对应的字符. 输入:可以是10进制也可以是16进制的形式的数字. print(chr(48), chr(49), chr(97)) # 十进制 #result:0 1 a print(chr(0x30), chr(0x31), chr(0x61))

随机推荐