q程中碰到的一些问题及|上摘录的解x法,希望大家阅读此文后会有所收获?/span>
1
Q?/span>
Jasperreport
?/span>
ireport
介:
JasperReport
是一ƾ报表打印组Ӟ是开放源代码l织
sf.net
中的一?/span>
java
报表打印工程Q?/span>
JasperReport
的最新版本是
0.5.2
版,最新版本可以从
http://jasperreports.sourceforge.net/index.html
下蝲得到?/span>
iReport
也是开源组l?/span>
sf.net
中的一Ƒօ费YӞ其主要作用是用来以可视化的方式设计生?/span>
JasperReport
所使用的报表格式文Ӟ因ؓ
JasperReport
本nq未提供很好的可视化报表设计工具Q?/span>
iReport
的出现正好I补了q个~陷?/span>
iReport
的最新版本是
0.3.0
Q?/span>
iReport
可以?/span>
http://ireport.sourceforge.net
下蝲得到?/span>
2
Q?/span>
Jasperreport
?/span>
ireport
的安装及配置Q?/span>
Jasperreport
不用另外q行安装Q只需要下?/span>
JasperReport-x.x.x.jar
文g可以了?/span>
JasperReport
的配|比较简单,直接?/span>
JasperReport-x.x.x.jar
文gd到操作系l的环境变量
ClASSPATH
中即可完?/span>
JasperReport
的配|?/span>
iReport
?/span>
Windows
q_也是?/span>
.zip
形式的文件提供的Q直接解压羃后就完成了安装。只?/span>
2.x
版的
iReport
需要配|,
3.0
版的
iReport
无需q行M配置Q直接启动时
ireport.bat
文g可以了?/span>
3
Q?/span>
iReport
中文昄的问题:
1
Q、当
iReport
中提C框输入中文不能正常昄Ӟ直接?/span>
iReport
?/span>
lib
中的
tinylaf.jar
q个包删除即可?/span>
2
Q、在
iReport
中运行报表时如果出现q问题Ӟ?/span>
itext-1.02b.jar
?/span>
iTextAsian.jar
q两个包加到
CLASSPATH
卛_。即加入?/span>
C
Q?/span>
\iReport-0.3.0\lib
目录中即可?/span>
3
Q、带有中文显C的报表Q?/span>
LM文本框,双击它,在出现的对话框中选择
Static Text
,修改
text
内容为汉
字,如下所C:
同时Q修?/span>
FONT
中的内容与下图相同
改动的地Ҏ三项Q一?/span>
font name,
二是
PDF font name
三是
PDF Encoding
再次预览报表卛_昄中文报表?/span>
上面修改的第二和W三在
JRViewer
中是看不出来效果的,如果选择报表的生成结果ؓ
PDF
格式则会体现出来?/span>
4.
讄数据库连?/span>
选择?/span>
data source
”菜单中的?/span>
Connections/Datasources
”,在打开的数据连接列表窗?/span>
中点几Z?/span>
new
”以便新增一个数据源Q?/span>
JasperReport
可以使用多种数据源,可以?/span>
JDBC
?/span>
据库q接Q也可以是从
XML
文g中取数据{,以下是?/span>
ORACLE
中的
CH
数据库做?/span>
数据源的一个配|例子?/span>
上例中是?/span>
ORACLE
做ؓ数据库的一个例子,我们q需要手工复?/span>
ORACLE
?/span>
JDBC
?/span>
动文件到
iReport
?/span>
lib
目录Q复?/span>
JDBC
驱动以外需要重新运?/span>
iReport
才会生效。配|好
数据源以后,点击?/span>
Test
”按钮,如果配置没有错误Q应该会出现如下所C的内容Q?/span>
试数据库连接成功后Q点几Z?/span>
Save
”按钮保存这个数据源以便完成数据源的配置?/span>
5
Q?/span>
JasperReport
在程序中的应?/span>
在网上找?/span>
JasperReport
在程序中的应用的例子Q现摘录如下Q?/span>
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.*" %>
<%
//数据库连?br />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文g
File reportFile = new File(application.getRealPath("test/iteminfo.jasper"));
//向报表中定义的参数赋?br />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.)
如何?/span>
PDF
格式报表l果直接输出到打印机
注:q段代码只能应用?/span>
JavaApplication
?/span>
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.
以上是本人在学习
Jasperreport
?/span>
ireport
中认为应该注意的及容易碰到的一些问题,许多解决Ҏ是直接从|上摘录的,另外
Jasperreport
?/span>
ireport
的Y件及一些相关的学习资料Q我已经其
COPY
到公司的
SERVER
服务器暂存盘上我的个人目录下的网l报表设计子目录中,大家要是不想自己M载,可直接到服务器上?/span>
COPY
一份,同时也希望对大家有所帮助?/span>
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=645592

]]>