JasperReport和iReport版本的问题
一:如果版本不匹配,预览是什么东西也都看不到
中文乱码的问题
二:就是要下个包iTextAsian.jar 并且要放在iReport的lib目录下面
再就是在新建field等的时候要把PFD Font Name 里选STSong-Light
PDF Embedded PDF Encoding前面打上勾下拉框里选UniGB-UCS2-H (Chinese Simplified)
iReport是如何工作的?
三:对于这个问题,我想得比较久了,找资料也是有限,所以就一直没弄明白它是怎么部署到我们jsp页面运用上去的,一整个工作的原理没清楚,后来总算理解了,其实很简单的,大家别笑话我呀……
下面是jsp代码 是实现套打的代码
<%
String id = request.getParameter("paramId");//这个id是传到iReport里面去的
%>
<%
//报表编译之后生成的.jasper 文件的存放位置
//File reportFile = new File(application
// .getRealPath("/test.jasper"));
File reportFile = new File("D://Program Files//JasperSoft//iReport-2.0.3//biao1.jasper");
//这个是用来联接我的SQL Server 的JDBC URL
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=cmtony";
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver")
.newInstance();
//传递报表中用到的参数值
Map parameters = new HashMap();
//"Name"是报表中定义过的一个参数名称,其类型为String 型
parameters.put("id", new String(id));
System.out.println("---------conn-------------");
//连接到数据库
Connection conn = DriverManager.getConnection(url, "sa", "sa");
System.out.println("---------Jasper begin-------------");
//在控制台显示一下报表文件的物理路径
System.out.println(reportFile.getPath());
byte[] bytes = JasperRunManager.runReportToPdf(
reportFile.getPath(), parameters, conn);
System.out.println("---------Jasper end-------------");
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
%>
工作原理:iReport 中建立-------执行动态报表会长生一个*.jasper文件
iReport只要运行这一次就可以了,以后我们每次运行jsp里面的代码就可以直接读取这个文件,就可以生成你想要的 pdf或是别的格式的报表,参数可以从这个页面传到*.jasper文件,这个文件就会可以根据这个参数到数据查询出你想要的数据,当然要开始在iReport中设置这个参数,还要写报表查询语句