精华内容
下载资源
问答
  • 当报表已经发布到COGNOS服务器上后,对报表进行修改后可以通过导入XML文件实现修改,只需要简单的修改几个地方就可以实现使用本地文件系统轻松的导入或导出报表 首先,注册cognos/c8/bin/lfa.dll主键,开始菜单...

          当报表已经发布到COGNOS服务器上后,对报表进行修改后可以通过导入XML文件实现修改,只需要简单的修改几个地方就可以实现使用本地文件系统轻松的导入或导出报表

          首先,注册cognos/c8/bin/lfa.dll主键,在开始菜单运行中,输入“regsvr32  F:/ cognos/c8/bin/lfa.dll”(其中F盘为COGNOS安装盘)
       然后
    登陆COGNOS控制台,找到需要修改的报表,点击报表后的按钮按钮进入Report studio界面,点击工具、选项、高级选项卡,选中“允许访问本地文件”,如下图所示:设置REPORT STUDIO

    点击确定,此时选择【文件】,会出现本地打开和本地保存,重启电脑后就可以把本地的xml文件打开,然后保存成报表,或者把报表保存为本地xml ,如下图所示

    保存或打开本地XML

    展开全文
  • ActiveReports支持运行时绑定数据源功能,这种绑定数据源方法使用较为普及,然而很多系统中都需要在后台导出报表文件,所以用户就很困惑,ActiveReports中如何在后台导出运行时绑定数据源报表?到底是怎样的逻辑? ...

    ActiveReports支持运行时绑定数据源功能,这种绑定数据源方法使用较为普及,然而很多系统中都需要在后台导出报表文件,所以用户就很困惑,ActiveReports中如何在后台导出运行时绑定数据源报表?到底是怎样的逻辑?

    这篇文章就主要讲解了在MVC中导出运行时数据源的报表文件。

     

    1. 新建MVC 工程

    2. 在Index.cshtml 中初始化HTML5Viewer

    <div>
        <div id="viewerContainer" style="width:100%;height:800px;border:1px solid gray;margin-top:20px;"></div>
    </div>
        <script type="text/javascript">
            $(function () {
                var viewer = GrapeCity.ActiveReports.Viewer(
                {
                    element: '#viewerContainer',
                    report: {
                        id: "客户信息.rdlx"
                      
                    },
                    reportService: {
                        url: 'ActiveReportsService.asmx'
                    },
                    uiType: 'desktop'
                });
            });
        </script>
    

     

    3. 新建报表文件【客户信息.rdlx】,并设置数据源为Object Provider

    image

     

    添加数据集,设置数据集字段

    image

     

    3. 新建Web服务文件,继承GrapeCity.ActiveReports.Web.ReportService

    重写OnCreateReportHandler方法,实现LocateDataSource方法

      protected override object OnCreateReportHandler(string reportPath)
            {
                var instance = base.OnCreateReportHandler(reportPath);
                var pageReport = instance as PageReport;
                if (pageReport != null)
                {
                    pageReport.Document.LocateDataSource += Document_LocateDataSource;
                }
                return instance;
            }

     

    4. 在LocateDataSource中调用导出Excel函数

     void Document_LocateDataSource(object sender, LocateDataSourceEventArgs args)
            {
               
                        string customerID = args.Report.Parameters[0].CurrentValue.ToString();
                        args.Data = GetCustomer(customerID);
                        ExportToExcel(args.Report);
                  
                  
             
            }

    5. 实现导出Excel方法

    private void ExportToExcel(PageDocument report)
            {
                
    
                GrapeCity.ActiveReports.Export.Excel.Section.XlsExport xlsExport1 = new GrapeCity.ActiveReports.Export.Excel.Section.XlsExport();
                xlsExport1.FileFormat = GrapeCity.ActiveReports.Export.Excel.Section.FileFormat.Xlsx;
                xlsExport1.Export(report, @"D:\Demo\\" + "\\XLS1t.xlsx");
            }

     

    Demo下载:

    转载于:https://www.cnblogs.com/lenkaguo/p/5949526.html

    展开全文
  • 如何使用XtraReport将报表导出为PDF

    千次阅读 2018-05-25 16:57:22
    概述:这个示例将展示如何使用XtraReport将报表导出为PDF格式。这个示例将展示如何使用XtraReport将报表导出为PDF格式。 首先需要项目中新建一个报表(命名为XtraReport1)。还请注意,如果您希望用于打开系统中*....

    概述:这个示例将展示如何使用XtraReport将报表导出为PDF格式。


    这个示例将展示如何使用XtraReport将报表导出为PDF格式。 首先需要在项目中新建一个报表(命名为XtraReport1)。还请注意,如果您希望用于打开系统中*.pdf文件的默认程序自动打开生成的文件,你可以调用StartProcess方法,示例中也有展示。

    C#

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    using System.Diagnostics;
    using DevExpress.XtraPrinting;
    using DevExpress.XtraReports.UI;
    // ...
     
    private void button1_Click(object sender, EventArgs e)
    {
        // A path to export a report.
        string reportPath = "c:\\Test.pdf";
     
        // Create a report instance.
        XtraReport1 report = new XtraReport1();
     
        // Get its PDF export options.
        PdfExportOptions pdfOptions = report.ExportOptions.Pdf;
     
        // Set PDF-specific export options.
        pdfOptions.Compressed = true;
        pdfOptions.ImageQuality = PdfJpegImageQuality.Low;
        pdfOptions.NeverEmbeddedFonts = "Tahoma;Courier New";
        pdfOptions.DocumentOptions.Application = "Test Application";
        pdfOptions.DocumentOptions.Author = "DX Documentation Team";
        pdfOptions.DocumentOptions.Keywords = "XtraReports, XtraPrinting";
        pdfOptions.DocumentOptions.Subject = "Test Subject";
        pdfOptions.DocumentOptions.Title = "Test Title";
     
        // Set the pages to be exported.
        pdfOptions.PageRange = "1, 3-5";
     
        // Export the report to PDF.
        report.ExportToPdf(reportPath);
     
        // Show the result.
        StartProcess(reportPath);
    }
     
    // Use this method if you want to automaically open
    // the created PDF file in the default program.
    public void StartProcess(string path)
    {
        Process process = new Process();
        try
        {
            process.StartInfo.FileName = path;
            process.Start();
            process.WaitForInputIdle();
        }
        catch { }
    }
     
    VB
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Imports System.Diagnostics
    Imports DevExpress.XtraPrinting
    Imports DevExpress.XtraReports.UI
    ' ...
     
    Private Sub Button1_Click(ByVal sender As System.ObjectByVal As System.EventArgs) _
    Handles Button1.Click
        ' A path to export a report.
        Dim reportPath As String "c:\\Test.pdf"
     
        ' Create a report instance.
        Dim report As New XtraReport1()
     
        ' Get its PDF export options.
        Dim pdfOptions As PdfExportOptions = report.ExportOptions.Pdf
     
        ' Set PDF-specific export options.
        pdfOptions.Compressed = True
        pdfOptions.ImageQuality = PdfJpegImageQuality.Low
        pdfOptions.NeverEmbeddedFonts = "Tahoma;Courier New"
        pdfOptions.DocumentOptions.Application = "Test Application"
        pdfOptions.DocumentOptions.Author = "DX Documentation Team"
        pdfOptions.DocumentOptions.Keywords = "XtraReports, XtraPrinting"
        pdfOptions.DocumentOptions.Subject = "Test Subject"
        pdfOptions.DocumentOptions.Title = "Test Title"
     
        ' Set the pages to be exported.
        pdfOptions.PageRange = "1, 3-5"
     
        ' Export the report to PDF.
        report.ExportToPdf(reportPath)
     
        ' Show the result.
        StartProcess(reportPath)
    End Sub
     
    ' Use this method if you want to automaically open
    ' the created PDF file in the default program.
    Public Sub StartProcess(ByVal path As String)
        Dim process As New Process()
        Try
            process.StartInfo.FileName = path
            process.Start()
            process.WaitForInputIdle()
        Catch
        End Try
    End Sub
    文章转自:https://www.evget.com/article/2012/11/26/18159.html
    展开全文
  • 但是每个报表在导出时间窗口稍微大一点的数据时,就异常缓慢,有时候多人一起导出时还会出现堆溢出。 他知道是因为数据全部加载到jvm内存导致的堆溢出。所以只能对时间窗口做了限制。以避免因导出过数据过大而引起的...

    背景

    最近有个学弟找到我,跟我描述了以下场景:

    他们公司内部管理系统上有很多报表,报表数据都有分页显示,浏览的时候速度还可以。但是每个报表在导出时间窗口稍微大一点的数据时,就异常缓慢,有时候多人一起导出时还会出现堆溢出。

    他知道是因为数据全部加载到jvm内存导致的堆溢出。所以只能对时间窗口做了限制。以避免因导出过数据过大而引起的堆溢出。最终拍脑袋定下个限制为:导出的数据时间窗口不能超过1个月。

    虽然问题解决了,但是运营小姐姐不开心了,跑过来和学弟说,我要导出一年的数据,难道要我导出12次再手工合并起来吗。学弟心想,这也是。系统是为人服务的,不能为了解决问题而改变其本质。

    所以他想问我的问题是:有没有什么办法可以从根本上解决这个问题。

    所谓从根本上解决这个问题,他提出要达成2个条件

    • 比较快的导出速度
    • 多人能并行下载数据集较大的数据

    我听完他的问题后,我想,他的这个问题估计很多其他童鞋在做web页导出数据的时候也肯定碰到过。很多人为了保持系统的稳定性,一般在导出数据时都对导出条数或者时间窗口作了限制。但需求方肯定更希望一次性导出任意条件的数据集。

    鱼和熊掌能否兼得?

    答案是可以的。

    我坚定的和学弟说,大概7年前我做过一个下载中心的方案,20w数据的导出大概4秒吧。。。支持多人同时在线导出。。。

    学弟听完表情有些兴奋,但是眉头又一皱,说,能有这么快,20w数据4秒?

    为了给他做例子,我翻出了7年前的代码。。。花了一个晚上把核心代码抽出来,剥离干净,做成了一个下载中心的例子

    超快下载方案演示

    先不谈技术,先看效果,(完整案例代码文末提供)

    数据库为mysql(理论上此套方案支持任何结构化数据库),准备一张测试表t_person。表结构如下:

    CREATE TABLE `t_person` (
      `id` bigint(20) NOT NULL auto_increment,
      `name` varchar(20) default NULL,
      `age` int(11) default NULL,
      `address` varchar(50) default NULL,
      `mobile` varchar(20) default NULL,
      `email` varchar(50) default NULL,
      `company` varchar(50) default NULL,
      `title` varchar(50) default NULL,
      `create_time` datetime default NULL,
      PRIMARY KEY  (`id`)
    );
    

    一共9个字段。我们先创建测试数据。

    案例代码提供了一个简单的页面,点以下按钮一次性可以创建5w条测试数据:

    file

    这里我连续点了4下,很快就生成了20w条数据,这里为了展示下数据的大致样子,我直接跳转到了最后一页

    file

    然后点开下载大容量文件,点击执行执行按钮,开始下载t_person这张表里的全部数据

    file

    点击执行按钮之后,点下方刷新按钮,可以看到一条异步下载记录,状态是P,表示pending状态,不停刷新刷新按钮,大概几秒后,这一条记录就变成S状态了,表示Success

    file

    然后你就可以下载到本地,文件大小大概31M左右

    file

    看到这里,很多童鞋要疑惑了,这下载下来是csv?csv其实是文本文件,用excel打开会丢失格式和精度。这解决不了问题啊,我们要excel格式啊!!

    其实稍微会一点excel技巧的童鞋,可以利用excel导入数据这个功能,数据->导入数据,根据提示一步步,当中只要选择逗号分隔就可以了,关键列可以定义格式,10秒就能完成数据的导入

    file

    你只要告诉运营小姐姐,根据这个步骤来完成excel的导入就可以了。而且下载过的文件,还可以反复下。

    是不是从本质上解决了下载大容量数据集的问题?

    原理和核心代码

    学弟听到这里,很兴奋的说,这套方案能解决我这里的痛点。快和我说说原理。

    其实这套方案核心很简单,只源于一个知识点,活用JdbcTemplate的这个接口:

    @Override
    public void query(String sql, @Nullable Object[] args, RowCallbackHandler rch) throws DataAccessException {
      query(sql, newArgPreparedStatementSetter(args), rch);
    }
    

    sql就是select * from t_personRowCallbackHandler这个回调接口是指每一条数据遍历后要执行的回调函数。现在贴出我自己的RowCallbackHandler的实现

    private class CsvRowCallbackHandler implements RowCallbackHandler{
    
        private PrintWriter pw;
    
        public CsvRowCallbackHandler(PrintWriter pw){
            this.pw = pw;
        }
    
        public void processRow(ResultSet rs) throws SQLException {
            if (rs.isFirst()){
                rs.setFetchSize(500);
                for (int i = 0; i < rs.getMetaData().getColumnCount(); i++){
                    if (i == rs.getMetaData().getColumnCount() - 1){
                        this.writeToFile(pw, rs.getMetaData().getColumnName(i+1), true);
                    }else{
                        this.writeToFile(pw, rs.getMetaData().getColumnName(i+1), false);
                    }
                }
            }else{
                for (int i = 0; i < rs.getMetaData().getColumnCount(); i++){
                    if (i == rs.getMetaData().getColumnCount() - 1){
                        this.writeToFile(pw, rs.getObject(i+1), true);
                    }else{
                        this.writeToFile(pw, rs.getObject(i+1), false);
                    }
                }
            }
            pw.println();
        }
    
        private void writeToFile(PrintWriter pw, Object valueObj, boolean isLineEnd){
            ...
        }
    }
    

    这个CsvRowCallbackHandler做的事就是每次从数据库取出500条,然后写入服务器上的本地文件中,这样,无论你这条sql查出来是20w条还是100w条,内存理论上只占用500条数据的存储空间。等文件写完了,我们要做的,只是从服务器把这个生成好的文件download到本地就可以了。

    因为内存中不断刷新的只有500条数据的容量,所以,即便多线程下载的环境下。内存也不会因此而溢出。这样,完美解决了多人下载的场景。

    当然,太多并行下载虽然不会对内存造成溢出,但是会大量占用IO资源。为此,我们还是要控制下多线程并行的数量,可以用线程池来提交作业

    ExecutorService threadPool = Executors.newFixedThreadPool(5);
    
    threadPool.submit(new Thread(){
    	@Override
    	public void run() {
        下载大数据集代码
      }
    }
                    
    

    最后测试了下50w这样子的person数据的下载,大概耗时9秒,100w的person数据,耗时19秒。这样子的下载效率,应该可以满足大部分公司的报表导出需求吧。

    最后

    学弟拿到我的示例代码后,经过一个礼拜的修改后,上线了页面导出的新版本,所有的报表提交异步作业,大家统一到下载中心去进行查看和下载文件。完美的解决了之前的2个痛点。

    但最后学弟还有个疑问,为什么不可以直接生成excel呢。也就是说在在RowCallbackHandler中持续往excel里写入数据呢?

    我的回答是:

    1.文本文件流写入比较快

    2.excel文件格式好像不支持流持续写入,反正我是没有试成功过。

    我把剥离出来的案例整理了下,无偿提供给大家,希望帮助到碰到类似场景的童鞋们。

    关注作者

    关注公众号「元人部落」回复”导出案例“即可获得以上完整的案例代码,直接可以运行起来,页面上输入http://127.0.0.1:8080就可以打开文中案例的模拟页面。

    展开全文
  • 如何优雅的导出Excel

    千次阅读 2019-09-17 10:09:11
    这个时候如何优雅的实现报表导出,释放生产力就显得很重要了。下面主要给大家分享一下该工具类的使用方法与实现思路。 实现的功能点 对于每个报表都相同的操作,我们很自然的会抽离出来,这个很简单。而最重要的是...
  • VB导出Excel报表

    2014-03-30 00:23:00
    VB 是常用的应用软件开发工具之一,由于VB...但由于VB与EXCEL由于分别属于不同的应用系统如何把它们有机地结合一起,是一个值得我们研究的课题。  一、 VB读写EXCEL表: 能获取到表的行数的代码:xlSheet2.Us...
  • vb导出excel报表源代码

    热门讨论 2012-09-21 17:47:28
    VB 是常用的应用软件开发工具之一,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给...但由于VB与EXCEL由于分别属于不同的应用系统如何把它们有机地结合一起,是一个值得我们研究的课题。
  • 一般本校同学都认为只能是XP或者Win 7 的32位系统才能导出,然后就不得不为了打印检查表而装一个虚拟机,费时费力,下面笔者根据自己的探索给出如何在 Win 10的64位系统导出检查表。 根据老教务
  • 来源:你我家门口juejin.im/post/5c6b6b126fb9a04a0c2f024f前言公司项目最近有一个需要:报表导出。整个系统下来,起码超过一百张报表需要导出。这个时候如...
  • 来源:你我家门口juejin.im/post/5c6b6b126fb9a04a0c2f024f前言公司项目最近有一个需要:报表导出。整个系统下来,起码超过一百张报表需要导出。这个时候如...
  • 在前面的课程中我们完成了将运营数据导出到Excel文件的功能。在企业开发中,除了常见的Excel形式报表,还有PDF形式的报表。... iText的安装非常方便,下载iText.jar文件后,只需要在系统的CLASSPATH中加入iText.ja
  • 《实战录》导语 云端卫士《实战录》栏目定期会向粉丝朋友们分享...系统中经常存在导出报告的需求,而导出的框架五花八门,该如何选择呢? 本文对几种常见的框架进行比较,希望可以遇到导出需求时,为你提供
  • java实现文件的导入导出数据库,目前大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下。 目前我所接触过的导入导出技术主要有POI和iReport,poi主要作为一些数据...
  • java实现文件的导入导出数据库,目前大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下。 目前我所接触过的导入导出技术主要有POI和iReport,poi主要作为一些数据...
  • 林业上资源统计各种复杂报表的生成和数据统计以及导入与导问题,一直没能得到有效地解决,随着Web技术的发展,如何实现Web环境下复杂报表生成和数据统计受到各级管理人员的重视。本研究切入这种急需,以浙江森林监测...
  • 整个系统下来,起码超过一百张报表需要导出。这个时候如何优雅的实现报表导出,释放生产力就显得很重要了。下面主要给大家分享一下该工具类的使用方法与实现思路。 实现的功能点 对于每个报表都相同的操作,我们很...
  • 提供VB.net、C#丰富使用例子,报表如何调用一目了然。 工具特点: 1、可根据SQL语句自动生成报表格式,打印格式,用户只要稍微调整就可形成一张普通报表。 2、可设置报表分组、小计、合计等。 3、可设置报表的过滤...
  • 业务系统中,很多报表都是沿用之前 EXCEL 的报表样式,原来以 sheet 格式显示的表,客户 web 端展现的时候也希望也有同样的格式,润乾实现这种效果和 EXCEL 一样简单灵活,轻松将数据报表以多个 TAB 页的形式...
  • ; 客服语音系统需要综合使用本地语音采集云端语音识别本地执行语音指令及离线语音分析关联分析等功能其核心是实现实时语音助手...自动生成工单任务报表全文字记录客户通话信息方便后期统计客户录音上传云随时随地可导出
  • 最近系统重装,还原dmp备份文件时,由于数用exp命令导出时表没有导出全部,导致华丹智能WEB报表快速开发平台不能正常运行。于是就想使用以前安装路径的数据文件作为数据源。具体步骤如下: 1、先将原先安装路径D:\app...
  • 报表开发好了,要应用到系统中呢,下面教大家如何把Visual studio或者SQL Server Data Tools 开发的报表导入到系统中。进入, 销售---报表 ,点 新建点 “浏览”定位到报表保存的文件夹。一般我的文档中 Projects...
  • SSH实现Excel导出

    千次阅读 2018-05-02 10:13:14
    当前B/S模式已成为应用开发的主流,而企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统、银行系统)。或者是:我们已经习惯用Excel打印。这样我们实际的开发中,很多时候需要...
  • 用vb.net 导出word

    千次阅读 热门讨论 2016-05-07 17:43:28
    上回借机房收费系统讲到了用vb.net导出Excel,这次做项目的过程中,我们不仅学会了将数据打印到VS自带的报表中,还了解了如何用vb.net操作word,将窗体中的内容反映到word中。所以今天要向大家分享一下如何用VB...
  • java导入、导出

    2018-03-06 21:57:00
    当前B/S模式已成为应用开发的主流,而企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统、银行系统)。或者是:我们已经习惯用Excel打印。这样我们实际的开发中,很多时候需要...
  • 业务系统中,很多报表都是沿用之前EXCEL的报表样式,原来以sheet格式显示的表,客户web端展现的时候也希望也有同样的格式,润乾实现这种效果和EXCEL一样简单灵活,轻松将数据报表以多个TAB页的形式展现页面中...
  • excel的导入导出

    千次阅读 2016-04-21 23:51:19
    当前B/S模式已成为应用开发的主流,而企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统、银行系统)。或者是:我们已经习惯用Excel打印。这样我们实际的开发中,很多时候需要...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 321
精华内容 128
关键字:

如何在系统导出报表