网络报表学习体会心得!

这几天本人专门对网络报表的设计及打印技术进行了调查研究,在网上收集了许多相关资料,其中ireport+jasperreport是许多相关人士的首推,因此本人对此进行了较详细的学习,下面是本人在学习ireportjasperreport过程中碰到的一些问题及网上摘录的解决方法,希望大家阅读此文后会有所收获。
1Jasperreportireport简介:
   JasperReport 是一款报表打印组件,是开放源代码组织 sf.net 中的一个 java 报表打印工程,JasperReport 的最新版本是 0.5.2 版,最新版本可以从 http://jasperreports.sourceforge.net/index.html 下载得到。
    iReport 也是开源组织 sf.net 中的一款免费软件,其主要作用是用来以可视化的方式设计生成 JasperReport 所使用的报表格式文件,因为 JasperReport 本身并未提供很好的可视化报表设计工具,iReport 的出现正好弥补了这个缺陷。iReport 的最新版本是 0.3.0
iReport 可以从 http://ireport.sourceforge.net 下载得到。
 
2Jasperreportireport的安装及配置:
Jasperreport不用另外进行安装,只需要下载JasperReport-x.x.x.jar 文件就可以了。JasperReport 的配置比较简单,直接将JasperReport-x.x.x.jar 文件添加到操作系统的环境变量 ClASSPATH 中即可完成 JasperReport 的配置。
iReport Windows 平台也是以.zip 形式的文件提供的,直接解压缩后就算完成了安装。只有 2.x 版的iReport需要配置,3.0 版的iReport无需进行任何配置,直接启动时 ireport.bat 文件就可以了。
 
3iReport中文显示的问题:
   1)、当iReport中提示框输入中文不能正常显示时,直接将iReportlib中的tinylaf.jar这个包删除即可。
  2)、在iReport中运行报表时如果出现乱码问题时,将itext-1.02b.jariTextAsian.jar这两个包加到CLASSPATH即可。即加入到C/iReport-0.3.0/lib目录中即可。
3)、带有中文显示的报表:
任意画一文本框,双击它,在出现的对话框中选择 Static Text 项,修改 text 内容为汉字,如下所示:
同时,修改 FONT 项中的内容与下图相同
改动的地方有三项,一是 font name,二是 PDF font name 三是 PDF Encoding 再次预览报表即可显示中文报表。上面修改的第二和第三项在JRViewer中是看不出来效果的,如果选择报表的生成结果为PDF 格式则会体现出来。
 
4. 设置数据库连接
   选择“data source”菜单中的“Connections/Datasources”,在打开的数据连接列表窗口中点击“new”以便新增一个数据源,JasperReport 可以使用多种数据源,可以是 JDBC 据库连接,也可以是从 XML 文件中取数据等,以下是使用 ORACLE 中的 CH 数据库做为数据源的一个配置例子。
         
上例中是以 ORACLE 做为数据库的一个例子,我们还需要手工复制 ORACLE JDBC 动文件到 iReport lib 目录,复制 JDBC 驱动以外需要重新运行 iReport 才会生效。配置好数据源以后,点击“Test”按钮,如果配置没有错误,应该会出现如下所示的内容:
测试数据库连接成功后,点击“Save”按钮保存这个数据源以便完成数据源的配置。
 
5JasperReport 在程序中的应用
   在网上找到JasperReport 在程序中的应用的例子,现摘录如下:
1.) Servlet:
import javax.servlet.*;
import javax.servlet.http.*;
import dori.jasper.engine.*;
import java.io.*;
import java.util.*;
import java.sql.*;
/**
* @author Administrator
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class TestReport extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Connection conn = null;
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn =
DriverManager.getConnection(

"jdbc:microsoft:sqlserver://192.168.0.10:1433;DatabaseName=am;user=sa;password=sa");
ServletContext servletContext =this.getServletContext();
File reportFile = new File(servletContext.getRealPath("test/iteminfo.jasper"));
Map parameters = new HashMap();
Integer i=new Integer(8);
parameters.put("pjId", i);
byte[] bytes =
JasperRunManager.runReportToPdf(
reportFile.getPath(),
parameters,
conn);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
} catch (JRException jre) {
System.out.println("JRException:" + jre.getMessage());
} catch (Exception e) {
System.out.println("Exception:" + e.getMessage());
}
}
public void doPost(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
2.) JSP:

<%@ page contentType="text/html;charset=GBK" %>
<%@ page import="dori.jasper.engine.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<%
//数据库连接
Connection conn=null;
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://192.168.0.10:1433;DatabaseName=am;user=sa;password=
sa");
//取到编译后的jasper文件
File reportFile = new File(application.getRealPath("test/iteminfo.jasper"));
//向报表中定义的参数赋值
Map parameters = new HashMap();
Integer i=new Integer(8);
parameters.put("pjId", i);
byte[] bytes =
JasperRunManager.runReportToPdf(
reportFile.getPath(),
parameters,
conn
);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
%>
 
3.)如何将 PDF 格式报表结果直接输出到打印机
 
注:这段代码只能应用在JavaApplication
public void print() throws UnsupportedFormatException
{
save("./tmp.pdf");
try
{
String osName = System.getProperty("os.name");
//FOR WINDOWS 95 AND 98 USE COMMAND.COM
if (osName.equals("Windows 95") || osName.equals("Windows 98"))
{
Runtime.getRuntime().exec("command.com /C start acrord32 /p " + "./tmp.pdf");
}
//FOR WINDOWS NT/XP/2000 USE CMD.EXE
else
{
Runtime.getRuntime().exec("cmd.exe /C Start acrord32 /p " + "./tmp.pdf");
}
}
catch (IOException IOE)
{
JOptionPane.showMessageDialog(null, IOE.getMessage(), "RuntimeException",
JOptionPane.ERROR_MESSAGE);
}
}
 
6. 以上是本人在学习Jasperreportireport中认为应该注意的及容易碰到的一些问题,许多解决方案是直接从网上摘录的,另外Jasperreportireport的软件及一些相关的学习资料,我已经将其COPY到公司的SERVER服务器暂存盘上我的个人目录下的网络报表设计子目录中,大家要是不想自己去下载,可直接到服务器上去COPY一份,同时也希望对大家有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值