使用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文件)受保护
答案 0 :(得分:2)
我知道这个问题已得到回答和接受,但我无法抗拒添加思想......
难道这个问题是要求把车放在马前吗?
使用报告生成器创建Excel文件REP。然后,您希望将此数据用作Excel数据透视表的源。我认为有几种可能性:
这可以在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。