我需要在subReport中计算我正在计算的项目的总数.为此,我认为我需要将该变量的值添加到每个迭代的另一个变量中,或者用该值"递增"它.为每个组调用subReport,我得到该组的总数.我需要添加变量值,而不是数据库列/字段.
我收到一个整数returnValue从subReport,这本身就是在子报告的行数.我希望获得总计,因为subReport从我的主SQL查询中为不同的结果(每个为GROUP)调用多次.我想把所有的结果加起来,但我得到了一个null价值.我尝试添加一个操作subReport作为一个新的returnValue并选择Sum作为操作,但这也产生了一个null.
<variable name="itemCount" class="java.lang.Integer" resetType="None"/>
<variable name="grandCount"
class="java.lang.Integer"
incrementType="Group"
incrementGroup="ITEM_BUNDLE">
<variableExpression><![CDATA[$V{itemCount}]]></variableExpression>
</variable>
...
<returnValue subreportVariable="countItems" toVariable="itemCount"/>
我们有一份报告称客户希望将其导出为具有多个工作表的Excel格式.本质上,这两个查询共享相同的参数,但其他一切都不同.
在jasper-reports中如何导出到包含多个工作表的excel文件(理想情况下来自不同的数据源)?
前一天,我的老板问我,他想从网络应用程序中获取PDF格式的发票.鉴于每个人都使用JasperReports和iReport进行设计,我试过了.我的Web应用程序基于Java + Hibernate和Spring.起初Jasper看起来很好,而iReport也是如此.无论如何,我被两件事所阻止:
我见过DynamicJasper,但似乎我无法用它来设计报告.你怎么看?是否更容易使用替代品?
Jasper Reports是Crystal Reports的绝佳开源替代品.它非常适用于单页PDF页面,例如多页报告的字母和发票.然而,它不是非常友好的.NET,并且让C#/ Mono与JasperServer玩得很好并不富有成效.
有没有人从C#获得有关如何在JasperServer上运行报告的代码示例,并附加带有SOAP请求的XML数据集?它需要在Mono上运行,因此Microsoft.Web.Services2是不可能的.
我试图推出自己的肥皂请求.Jasper Server似乎接受了它,但我似乎无法得到任何响应,而不是服务器500错误.我没有附加一个MTOM附件.
var sb = new StringBuilder();
sb.AppendLine("<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">");
sb.AppendLine("<s:Body s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">");
sb.AppendLine("<q1:runReport xmlns:q1=\"http://axis2.ws.jasperserver.jaspersoft.com\">");
sb.AppendLine("<requestXmlString xsi:type=\"xsd:string\">");
sb.AppendLine("<request operationName=\"runReport\" locale=\"en\">");
sb.AppendLine(" <argument name=\"RUN_OUTPUT_FORMAT\">PDF</argument>");
sb.AppendFormat(" <resourceDescriptor name=\"\" wsType=\"\" uriString=\"{0}\" isNew=\"false\">", "/JourneyReport");
sb.AppendLine(" <label>null</label>");
sb.AppendLine(" <parameter name=\"testparam\">1</parameter>");
sb.AppendLine(" </resourceDescriptor>");
sb.AppendLine(" </request>");
sb.AppendLine("</requestXmlString>");
sb.AppendLine("</q1:runReport>");
sb.AppendLine("</s:Body></s:Envelope>");
var webRequest = (HttpWebRequest)WebRequest.Create("http://localhost:8080/jasperserver/services/repository");
webRequest.Credentials = new NetworkCredential("jasperadmin","jasperadmin");
webRequest.PreAuthenticate = true;
webRequest.Headers.Add("SOAPAction","");
//Set HttpWebRequest properties
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(sb.ToString());
webRequest.Method = "POST";
webRequest.ContentLength = bytes.Length;
webRequest.ContentType = "text/xml; encoding='utf-8'";
//Get Stream object
var …Run Code Online (Sandbox Code Playgroud) 我必须使用五种不同的SQL查询来准备报告.每个查询都会给出一个报告表.
所以我写了5个jrxml文件,每个文件对应一个上面的查询,带有自己的标题,标题设置,页脚,页面编号等.
现在,我能够将上述每个jrxmls编译,打印和导出为5个不同的pdf.
但是,客户希望将所有报告整理成一个单独的pdf.那是在最后的pdf中,前四页将是报告一,接下来五页报告两页,然后报告三页,依此类推.
1)如何实现这一目标?
2)每个报告的页码为1/4,2/4,3/4等.其中第二部分即完整的页码用评估时间作为报告进行评估.因此,当我将单个pdf(如果可能)整理所有报告时,是否也可以将页面重新编号为最终pdf?
根据下面的答案,我在我的java类中做了以下工作,它的工作原理如下:
try
{
JasperReport jreport1 = JasperCompileManager.compileReport(input1);
JasperPrint jprint1 = JasperFillManager.fillReport(jreport1, new HashMap(), new JREmptyDataSource());
//JasperExportManager.exportReportToPdfFile(jprint, "/home/ashutosh/Desktop/desktop/nikunj/JasperTestApp/output/mytest.pdf");
JasperReport jreport2 = JasperCompileManager.compileReport(input2);
JasperPrint jprint2 = JasperFillManager.fillReport(jreport2, new HashMap(), new JREmptyDataSource());
JasperReport jreport3 = JasperCompileManager.compileReport(input3);
JasperPrint jprint3 = JasperFillManager.fillReport(jreport3, new HashMap(), new JREmptyDataSource());
List<JasperPrint> jprintlist = new ArrayList<JasperPrint>();
jprintlist.add(jprint1);
jprintlist.add(jprint2);
jprintlist.add(jprint3);
JRExporter exporter = new JRPdfExporter();
exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT_LIST, jprintlist);
OutputStream output = new FileOutputStream(new File("/home/ashutosh/Desktop/desktop/nikunj/JasperTestApp/output/mytestbatch.pdf"));
exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM, output);
exporter.exportReport();
}catch(Exception e)
{
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
上图:input1,input2,input3是输入jrxmls的字符串路径
我的JRXML文件只打印三条消息:Hello World 1,Hello …
iReport版本:3.7.1
我以两种方式解决了这个问题.
我的第一种方法
我正在创建一个pdf页面,iReport我有一个字段(从数据库)设置为字体Gujarati-Salarl(印度的区域语言的字体).
此字体在字体列表中可用iReport.当我点击预览时,我得到所需的输出,字段为所需的字体样式.
这里的一切都很好.
但pdf生成的文件仍包含相同的英文原始字体.
无论我是从应用程序调用报告还是从JAVA文件调用报告,结果都是一样的.
经过一番研究,我发现了这个,第二种方法
JRProperties.setProperty("net.sf.jasperreports.default.pdf.font.name", "C:\\Gujrati-Saral-1.ttf");
Run Code Online (Sandbox Code Playgroud)
这设置了所提供字体pdf的ttf字体,但现在整个版本pdf都是Guarati-saral字体,这不是我想要的.
有没有办法专门将此字体应用于该特定字段?
要么
当通过第二种方法进行时,有没有办法不将字体Guarati-saral应用于除所需字段之外的所有其他字段?
您好,我对使用Jaspersoft iReport Designer完全不熟悉.我想要一份有两页的报告.我使用的版本是4.7.0.我已经有一个页面上有相关信息,但我不知道如何添加第二页.任何帮助将不胜感激.感谢您的时间.
我发现从Java应用程序填充报告时,JasperReports真的很慢.程序挂起在这一行:
print = JasperFillManager.fillReport(report, parameters, xmlDataSource);
Run Code Online (Sandbox Code Playgroud)
它通常在那里停留3分钟,消耗高达300Mb的RAM和50%的CPU.
report 是一个使用3个子报表的已编译(.jasper)报表.那么,如何提高报表填写性能呢?
根据向Jaspersoft Studio添加自定义数据源,能够将java bean中的自定义数据源添加到报表之后,我将使用jasper进入报表的第二点.
我有一个主报告,它使用数据库作为其数据源.然后我将一个bean.xml数据源添加到报表中,并将一个表添加到主报表中,该报表使用此bean.xml数据源来获取java bean.
我的目标是从主报表中获取字段值并操纵其值,然后用这些值填充bean,最后用bean填充表.
为此,我编写了3个类,我在表数据集中用作Scriptlet:
问题出在FillTable类中,当我说我String kNFormelGG = (String) this.getParameterValue("gg");创建的bean.xml与测试连接失败时java.lang.reflect.InvocationTargetException
Caused by: java.lang.NullPointerException
at net.sf.jasperreports.engine.JRAbstractScriptlet.getParameterValue(JRAbstractScriptlet.java:95)
at net.sf.jasperreports.engine.JRAbstractScriptlet.getParameterValue(JRAbstractScriptlet.java:86)
at org.iqtig.reporting.dataSource.bean.dataSourceXML.FillTable.fillTable(FillTable.java:45)
at org.iqtig.reporting.dataSource.bean.dataSourceXML.JRDataSourceFactory.createCollection(JRDataSourceFactory.java:27)
... 34 more
Run Code Online (Sandbox Code Playgroud)
如果我分配一个修复值,如String kNFormelGG ="Test me"bean连接遇到没有错误,并在将bean.xml指定为Dataset1中的默认数据适配器的值后,它将使用静态值填充表.如何从主报表数据源动态获取参数或值中的数据并在bean中使用它?我有这样的假设:在从我的适配器调用静态工厂类时,字段仍然是空的.也许我错了,但我没有找到任何其他声明来解决这个问题.
BeanFactory类
import java.util.Collection;
import net.sf.jasperreports.engine.JRDefaultScriptlet;
import net.sf.jasperreports.engine.JRScriptletException;
/**
* Factory for TableCellsBean Klasse
*
* @author iman.gharib
*/
public class JRDataSourceFactory extends JRDefaultScriptlet {
/**
* @return collection der TableCellsBean Objekten
* @throws JRScriptletException
*/
public …Run Code Online (Sandbox Code Playgroud) 我要在报告中写论文.我只想在我的诗歌中加入一些文字.我把<b></b>标签放在文本中,但它不起作用.
我想要的一个例子是"我的名字是杰森,我的姓是迈克尔 ".有人知道吗?
jasper-reports ×10
java ×4
ireport ×2
c# ×1
excel ×1
export ×1
itext ×1
jasperserver ×1
mono ×1
pdf ×1
performance ×1
report ×1
reporting ×1
soap ×1
xml ×1