如何在Excel中添加VBA Excel脚本生成Jasper报告?

时间:2011-09-05 05:00:23

标签: excel-vba jasper-reports vba excel

使用Jasper Server / Jasper Report 3.8创建当前Excel报告。

在我的情况下,我想使用Excel自动创建Pivot Excel(因为Jasper Report Crosstab不足以满足我的客户端要求),所以我有一个想法,即在生成的jasper报告时添加将创建数据透视表的VB脚本是第一次打开。

我已经创建了VBA脚本但是我找不到将VBA与Jasper Report(生成)集成的方法,这样当我生成报告时,VBA也包含在报告中。

有人能告诉我如何在Excel生成的Jasper报告中添加VB Excel脚本吗?

添加了约束:

  • 列表项

数据源(包含数据的Excel文件)受保护

3 个答案:

答案 0 :(得分:2)

我知道这个问题已得到回答和接受,但我无法抗拒添加思想......

难道这个问题是要求把车放在马前吗?

使用报告生成器创建Excel文件REP。然后,您希望将此数据用作Excel数据透视表的源。我认为有几种可能性:

  • 创建另一个包含REP结构的Excel文件PIV,其中包含一些样本数据以创建数据透视定义
  • 每次绘制新的REP
  • 时,复制/粘贴REP数据替换现有内容
  • 刷新Pivot

这可以在PIV中自动化,询问源文件名等,因此实际上不需要以任何方式触摸REP。作为复制/粘贴的替代方法,您可以在为数据透视表指定数据源时使用REP的外部链接,并在每次用户想要分析新REP时更改此值。

希望这有帮助

答案 1 :(得分:1)

我认为MikeD在这里有正确的想法。我从未使用过Jasper,但是如果它是CSV或Excel文件,为什么不在宏脚本中编写一个打开Jasper报告的块,使得数据透视表再次保存它。

自从我完成VBA以来,这已经好几年了,但这段代码是我在网上找到的用于打开工作簿的代码(参考:http://p2p.wrox.com/excel-vba/10510-opening-excel-file-vba.html

 Dim oExcel as Excel.Application
 Dim oWB as Workbook
 Set oExcel = new Excel.Application
 Set oWB = oExcel.Workbooks.Open(<pathToWorkbookHere>)

原谅这个语法,因为它来自10年前的记忆,但从那里,你可以做的事情,如

 oWB.Sheets(1).Cells.Copy
 ThisWorkBook.Sheets("PIVOTDATA").Cells.Paste() 
 ThisWorkBook.Sheets("PIVOTTABLE").Cells.Refresh
 ThisWorkBook.Saveas("<path to new report>", xlExcel12)

如果您的报告是按日期完成的,您可以以编程方式选择最新的,加载文件夹并解析所有文件夹,或者您想要的任何内容。您的模板文件是运行该脚本的文件,并以“不包含宏”状态保存自身的副本,因此您的用户永远不会收到安全警告。

如果以编程方式正确确定文件名,请将代码设置为在模板宏中运行“ON OPEN”,并在脚本末尾运行thisworkbook.close,所有您需要做的就是创建一个批处理文件,可在命令行上自动打开工作簿

excel.exe <template_filename>

然后设置一个Windows cron-job(称为计划任务),在您的jasper报告运行后立即每天自动运行。

很抱歉,如果其中一些在语法方面是“命中与错过”。我已经十多年没有深入Excel VBA了,但我写了一个这样的系统,当时每天都会生成数百个格式精美的excel报告......数据透视表和所有。

这是完全可以实现的,你走在正确的轨道上。

答案 2 :(得分:0)

通过查看Jasper Tracker上的答案,似乎jasper报告不支持此功能,并且不会包含在新功能中

  

this(将VBA脚本添加到Excel生成的Jasper报告)是一个特定的Excel功能,我很确定我们会   永远不会实施这主要是因为JasperReports不是XLS   生成库,而是一个带Excel输出的报告工具   功能

有关详细信息,请参阅此link