å®è£
å°±ä¸ç¨è¯´äºï¼ä½æ¯è¦ç解IreportåJasperReportçå
³ç³»ååéè¦ï¼Ireportæ¯è®¾è®¡æ¥è¡¨çå¾å½¢çé¢ï¼å¨Ireportéæ°å»ºä¸ä¸ªæ¥è¡¨æ¯ä»¥.jrxmlçå½¢å¼ä¿åçï¼èæç»è¦ç¨å°çæ¯å°.jrxmlçæ件ç¼è¯ä¸º.jsperçæ件ã.jasperæ件就æ¯JaserReportéè¦è°ç¨çæ¥è¡¨æ¨¡çï¼JasperReportç强大åè½å°±å¨äºå®è½å°.jasper转å为åç§æ件çæ ¼å¼ï¼å¦xls,rtf,pdfççæ常ç¨çæä»¶æ ¼å¼ã
è¦å°.jsperæ件åºç¨å¨é¡¹ç®ä¸ï¼é¦å
è¦åå æ ·åå¤å·¥ä½ï¼
1.å°å®è£
好çIreportï¼æ¾å°å®ä¸é¢çlibç®å½ï¼åæjasperreports-1.3.0.jarè¿ä¸ªå
å¤å¶åºæ¥(è¿ä¸ªå
æ¯JasperReport导åºçå
³é®)ï¼ç¶åå°è¿ä¸ªå
导å
¥å°éè¦åºç¨ç项ç®ä¸ï¼ç¶åå¨eclipseä¸éæ°æ建æ´ä¸ªé¡¹ç®ï¼è¿æ¯æå
³é®ç第ä¸æ¥ã
2.å¦æ导åºåºç°ä¹±ç çé®é¢ï¼éè¦å¼å
¥iTextäºæ´²è¯è¨å
,å¯ä»¥å¨
http://www.lowagie.com/iText/ æ¥çå
³äºiTextçç¸å
³ä¿¡æ¯ï¼å
æ¬æºä»£ç ï¼ææ¡£.
3.设计好æ¥è¡¨ï¼å°æ¥è¡¨ç¼è¯ä¸º.jsperæ件ï¼è¿äºæ件å¨iReportçå®è£
è·¯å¾ä¸ï¼å¾å®¹ææ¾å°ã
ç°å¨ä¸äºä¿±å¤ï¼åªæ¬ ä¸é£äºãæå¨å¼å§åç¨åºççæ¶åï¼å¨ç½ä¸æ¾äºå¥½äºä»£ç ï¼è导åºçè¿ç¨ä¸ç¨å°çç±» JRRtfExporter çæºä»£ç ä¹è¸©è¿ï¼å¹¶ä¸åç°äº
http://www.koders.com è¿ä¸ªé常好çç½ç«ï¼è¿æ¯å¼æºé¡¹ç®çå¿
å¤ï¼å¨ä¸é¢åºæ¬ä¸å¾å¤ç±»çæºç ä¹è½æ¥å°ã
æ¥çèªå·±å°è£
äºä¸ä¸ªJasperReportç±»ï¼èè¿ä¸ªç±»å¯ä»¥å®ç°å¯¼åºåç§æ ¼å¼çæ件ï¼ä»£ç å¦ä¸ï¼
packagecommon.ireport;
importnet.sf.jasperreports.engine.*;
importnet.sf.jasperreports.engine.export.*;
importnet.sf.jasperreports.engine.export.JRRtfExporter;
importjava.util.List;
importjava.io.*;
import com.log.Logger;
/**
*IReport+JasperReport导åºæ¥è¡¨ç±»æ¥å£
*<p>Title:导åºæ¥è¡¨ç±»</p>
*<p>Description:</p>
*<p>Copyright:Copyright(c)2007</p>
*<font class=companyfont>
*CES
*</font>
*@author éè°·å
*@version 1.0.2007.02.14
*/
publicclassJasperReport{
privateLogger logger= newLogger("common.ireport.JasperReport");
/**CreatesanewinstanceofMyReport*/
publicJasperReport(){
}
/*
* 导åºå个æ¥è¡¨ä¸ºrtfæword
* @param JasperPrint,OutputStream
* @ 页é¢è®¾ç½®response.setContentType("application/msword");
* @ 页é¢è®¾ç½®response.setHeader("Content-disposition","attachment;filename=fileName.doc");
* @ 页é¢è®¾ç½®response.setContentLength(bytes.length);
*/
publicvoidexportReportToRTF(JasperPrint jasperPrint,OutputStreamout){
JRRtfExporter rtfExporter= newJRRtfExporter();
rtfExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
rtfExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);
try{
rtfExporter.exportReport();
logger.debug("Genertate the RTF report ok! :"+ out);
} catch(JRException e) {
e.printStackTrace();
logger.error("Generate the RTF report file ERROR!");
}
}
/*
* 导åºå¤ä¸ªæ¥è¡¨ä¸ºrtfæword
* @param List,OutputStream
* @ 页é¢è®¾ç½®response.setContentType("application/msword");
* @ 页é¢è®¾ç½®response.setHeader("Content-disposition","attachment;filename=fileName.doc");
* @ 页é¢è®¾ç½®response.setContentLength(bytes.length);
*/
publicvoidexportReportListToRTF(List jasperPrints,OutputStream out){
JRRtfExporter rtfExporter= newJRRtfExporter();
rtfExporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrints);
rtfExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);
try{
rtfExporter.exportReport();
logger.debug("Genertate the mutiply RTF report ok! :"+ out);
} catch(JRException e) {
e.printStackTrace();
logger.error("Generate the mutiply RTF report file ERROR!");
}
}
/*
* 导åºå个æ¥è¡¨ä¸ºPDF
* @param JasperPrint,OutputStream
* @ 页é¢è®¾ç½®response.setContentType("application/pdf");
* @ 页é¢è®¾ç½®response.setHeader("Content-disposition","attachment;filename=fileName.pdf");
* @ 页é¢è®¾ç½®response.setContentLength(bytes.length);
*/
publicvoidexportReportToPDF(JasperPrint jasperPrint,OutputStreamout){
JRPdfExporter pdfExporter = newJRPdfExporter();
pdfExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
pdfExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);
try{
pdfExporter.exportReport();
logger.debug("Genertate the PDF report ok! :"+ out);
} catch(JRException e) {
e.printStackTrace();
logger.error("Generate the PDF report file ERROR!");
}
}
/*
* 导åºå个æ¥è¡¨ä¸ºXLS
* @param JasperPrint,OutputStream
* @ 页é¢è®¾ç½®response.setContentType("application/vnd.ms-excel");
* @ 页é¢è®¾ç½®response.setHeader("Content-disposition","attachment;filename=fileName.xls");
* @ 页é¢è®¾ç½®response.setContentLength(bytes.length);
*/
publicvoidexportReportToXLS(JasperPrint jasperPrint,OutputStreamout){
JRXlsExporter xlsExporter= newJRXlsExporter();
xlsExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
xlsExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);
xlsExporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
try{
xlsExporter.exportReport();
logger.debug("Genertate the XLS report ok! :"+ out);
} catch(JRException e) {
e.printStackTrace();
logger.error("Generate the XLS report file ERROR!");
}
}
/*
* 导åºå个æ¥è¡¨ä¸ºHTML
* @param JasperPrint,OutputStream
* @ 页é¢è®¾ç½®response.setContentType("text/html");
* @ 页é¢è®¾ç½®response.setHeader("Content-disposition","attachment;filename=fileName.html");
* @ 页é¢è®¾ç½®response.setContentLength(bytes.length);
*/
publicvoidexportReportToHTML(JasperPrint jasperPrint,OutputStreamout){
JRHtmlExporter htmlExporter = newJRHtmlExporter();
htmlExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
htmlExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);
htmlExporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE);
htmlExporter.setParameter(JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR, Boolean.FALSE);
try{
htmlExporter.exportReport();
logger.debug("Genertate the HTML report ok! :"+ out);
} catch(JRException e) {
e.printStackTrace();
logger.error("Generate the HTML report file ERROR!");
}
}
/*
* 导åºå个æ¥è¡¨ä¸ºCSV
* @param JasperPrint,OutputStream
*/
publicvoidexportReportToCSV(JasperPrint jasperPrint,OutputStreamout){
JRCsvExporter csvExporter = newJRCsvExporter();
csvExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
csvExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);
try{
csvExporter.exportReport();
logger.debug("Genertate the CSV report ok! :"+ out);
} catch(JRException e) {
e.printStackTrace();
logger.error("Generate the CSV report file ERROR!");
}
}
/*
* 导åºå个æ¥è¡¨ä¸ºTXT
* @param JasperPrint,OutputStream
* @ 页é¢è®¾ç½®response.setContentType("text/html");
* @ 页é¢è®¾ç½®response.setHeader("Content-disposition","attachment;filename=fileName.txt");
* @ 页é¢è®¾ç½®response.setContentLength(bytes.length);
*/
publicvoidexportReportToTXT(JasperPrint jasperPrint,OutputStreamout){
JRTextExporter txtExporter = newJRTextExporter();
txtExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
txtExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);
txtExporter.setParameter(JRTextExporterParameter.CHARACTER_WIDTH, newInteger(80));
txtExporter.setParameter(JRTextExporterParameter.CHARACTER_HEIGHT, newInteger(25));
try{
txtExporter.exportReport();
logger.debug("Genertate the TXT report ok! :"+ out);
} catch(JRException e) {
e.printStackTrace();
logger.error("Generate the TXT report file ERROR!");
}
}
/*
* 导åºå个æ¥è¡¨ä¸ºXML
* @param JasperPrint,OutputStream
*/
publicvoidexportReportToXML(JasperPrint jasperPrint,OutputStreamout){
try{
JasperExportManager.exportReportToXmlStream(jasperPrint, out);
logger.debug("Genertate the XML report ok! :"+ out);
} catch(JRException e) {
e.printStackTrace();
logger.error("Generate the XML report file ERROR!");
}
}
}
ç¶ååäºä¸ä¸ªControlç±»ç¨äºå°è£
.jasperæ件ï¼å¹¶è·åå
¶å¯¹è±¡ï¼ä»£ç å¦ä¸ï¼
packagecommon.ireport;
importnet.sf.jasperreports.engine.*;
importnet.sf.jasperreports.engine.export.*;
importnet.sf.jasperreports.engine.export.JRRtfExporter;
importnet.sf.jasperreports.engine.util.*;
importnet.sf.jasperreports.view.*;
importjava.util.*;
importjava.util.List;
importjava.sql.*;
importjava.io.*;
import java.net.URL;
/**
*导åºæ¥è¡¨æ§å¶ç±»*<p>Title:导åºæ¥è¡¨æ§å¶ç±»</p>
*<p>Description:</p>
*<p>Copyright:Copyright(c)2007</p>
*<font class=companyfont>
*CES
*</font>
*@author éè°·å
*@version 1.0.2007.02.14
*/
publicclassJsperReportControl {
privateLogger logger= newLogger("common.ireport.JsperReportControl");
privateQuery query= newQuery();
//å®ä¹æ¥è¡¨æ¨¡çè·¯å¾
privateString PREFIX="/ireportFile/";
//å®ä¹åç¼å
privateString SUFFIX=".jasper";
publicJsperReportControl(){
}
/*
* åå¾æ¥è¡¨æ¨¡çç对象
* å个åæ°çæ
åµ
* @param æ¥è¡¨å称ï¼strFileName
* @param åæ°å称ï¼strParamName
* @param åæ°å¼ï¼strParamValue
* @return JasperPrint
*/
publicJasperPrint getJsperPrint(String strFileName,String strParamName,String strParamValue) throwsSQLException{
JasperPrint jasperPrint = null;
String strJasper= this.getClassPath() + PREFIX + strFileName + SUFFIX ;
Map params = newHashMap();
params.put(strParamName,strParamValue);
//å®ä¹æ°æ®æºè¿æ¥å¯¹è±¡
Connection conn = null;
query.createConnection(CommonManage.CONN);
conn = query.getConnection();
try{
//ç¨JasperFillManager类导å
¥.jasperæ件ï¼åæ°åæ°æ®æº
jasperPrint = JasperFillManager.fillReport(strJasper, params, conn);
try{
if(conn==null){
conn.close();
}
}catch(SQLException sqle){
logger.error("å
³éæ°æ®åºè¿æ¥é误"+sqle);
}
}catch(Exception e){
logger.error("getJsperPrint(String strFileName,String strParamName,String strParamValue) Error"+e);
}
returnjasperPrint;
}
/**
*å¨ç±»ä¸åå¾å½åæ件æå¨çç¸å¯¹è·¯å¾ä¸ç»å¯¹è·¯å¾
*
*@return String
*/
publicStringgetClassPath(){
StringstrClassName=getClass().getName();
StringstrPackageName="";
StringstrURL= "";
if(getClass().getPackage()!=null)
{
strPackageName=getClass().getPackage().getName();
}
//System.out.println("ClassName:"+strClassName);
//System.out.println("PackageName:"+strPackageName);
StringstrClassFileName="";
if(!"".equals(strPackageName))
{
strClassFileName=strClassName.substring(strPackageName.length()+1,strClassName.length());
}
else
{
strClassFileName=strClassName;
}
//System.out.println("ClassFileName:"+strClassFileName);
String strTempName = strClassFileName+".class";
try
{
URLurl=null;
url=getClass().getResource(strClassFileName+".class");
strURL=url.toString();
System.out.println(strURL);
logger.info("strURL="+strURL);
}
catch(Exceptionex)
{
ex.printStackTrace();
}
//å.jasperæ件çç»å¯¹è·¯å¾
strURL= strURL.substring("file:".length(),strURL.length()-strTempName.length());
System.out.println("strURL="+strURL);
returnstrURL;
}
}
æé´å¨åç»å¯¹è·¯å¾æ¶åºç°äºé®é¢ï¼å¨æ¬æºæµè¯å¯ä»¥éè¿ï¼ä½æ¾å¨æå¡å¨ä¸æ¥éï¼åå æ¯æ¬æºæ¯windowsç³»ç»ï¼èæå¡å¨æ¯linuxç³»ç»ï¼å°ç°å¨æè§å¾æ大çåå æ¯getClass().getResource()è¿ä¸ªæ¹æ³å¨linuxç³»ç»ä¸åä¸å°èµæºçä½ç½®èæ¥éã
æåå°±æ¯æåç jsp 页é¢äº , 代ç å¦ä¸ï¼
<%@ page import="java.util.Vector"%>
<%@ page import="java.io.*" %>
<%@ page import="java.io.OutputStream" %>
<%@ page import="java.util.List"%>
<%@ page import="net.sf.jasperreports.engine.*" %>
<%@ page import="common.ireport.JsperReportControl"%>
<%@ page import="common.ireport.JasperReport"%>
<%
String strMode = WebUtil.getParam(request,"mode").equals("")?"":WebUtil.getParam(request,"mode");
JsperReportControl jsperReportControl = newJsperReportControl();
JasperReport jasperReport = newJasperReport();
strFileName1 ="quanlitySupervise_page1";
strFileName2 ="quanlitySupervise_page2";
strFileName3 ="quanlitySupervise_page3";
strFileName4 ="quanlitySupervise_page4";
strFileName5 ="quanlitySupervise_page5";
strFileName6 ="quanlitySupervise_page6";
strFileName7 ="quanlitySupervise_page7";
strFileName8 ="quanlitySupervise_page8";
String strParamName="ID";
String strParamValue=strProjectID;
ByteArrayOutputStream baos = newByteArrayOutputStream();
String strQueryConditionTmp="projectName="+strProjectName;
QueryCtrl queryCtrl = newQueryCtrl();
String str="";
if(strMode.equals("out")){
JasperPrint jasperPrint1= jsperReportControl.getJsperPrint(strFileName1,strParamName,strParamValue);
JasperPrint jasperPrint2= jsperReportControl.getJsperPrint(strFileName2,strParamName,strParamValue);
JasperPrint jasperPrint3= jsperReportControl.getJsperPrint(strFileName3,strParamName,strParamValue);
JasperPrint jasperPrint4= jsperReportControl.getJsperPrint(strFileName4,strParamName,strParamValue);
JasperPrint jasperPrint5= jsperReportControl.getJsperPrint(strFileName5,strParamName,strParamValue);
JasperPrint jasperPrint6= jsperReportControl.getJsperPrint(strFileName6,strParamName,strParamValue);
JasperPrint jasperPrint7= jsperReportControl.getJsperPrint(strFileName7,strParamName,strParamValue);
JasperPrint jasperPrint8= jsperReportControl.getJsperPrint(strFileName8,strParamName,strParamValue);
List reportlist = (List)newjava.util.ArrayList();
reportlist.add(jasperPrint1);
reportlist.add(jasperPrint2);
reportlist.add(jasperPrint3);
reportlist.add(jasperPrint4);
reportlist.add(jasperPrint5);
reportlist.add(jasperPrint6);
reportlist.add(jasperPrint7);
reportlist.add(jasperPrint8);
//导åºå页æµè¯ç¨
//jasperReport.exportReportToRTF(jasperPrint1,baos);
//æ´åå¤é¡µå¯¼åº
jasperReport.exportReportListToRTF(reportlist,baos);
byte[] bytes;
bytes = baos.toByteArray();
response.setContentType("application/ms_word");
String strDocName ="attachment;filename="+strProjectID+".doc";
response.setHeader("Content-disposition",strDocName);
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
}
}
%>
ç»å°¾ï¼å¨æ¬æºæµè¯éè¿äºï¼ä½æ¾äºæå¡å¨åºç°äºéè¯¯ï¼ Can't connect to X11 window server using':0.0' as the value of the DISPLAY
èå¨ windows ç³»ç»ä¸å´è½æ£ç¡®è¿è¡ï¼åå æ¯ç¨åºè°ç¨äºå¾å½¢çé¢çåè½ï¼è windows å¾å¥½çæ¯æå¾å½¢çé¢ï¼ linux å´ä¸è½å¾å¥½çæ¯æï¼éè¦ä¿®æ¹ linux ä¸ç DISPLAY çåéï¼
ä¸é¢æå ç§æ¹æ³ï¼
1ï¼ å¯¹äº tomcat æå¡å¨ï¼æ¾å°èæ¬ï¼ catalina.sh ï¼
å¨ /usr/local/tomcat/bin/catalina.sh ä¸ä¿®æ¹ä¸º
JAVA_OPTS="-Djava.awt.headless=true" æè
CATALINA_OPTS="-Djava.awt.headless=true"
echo "Using CATALINA_BASE:$CATALINA_BASE"
echo "Using CATALINA_HOME:$CATALINA_HOME"
echo "Using CATALINA_TMPDIR:$CATALINA_TMPDIR"
echo "Using RUNJAVA:$_RUNJAVA"
echo "Using JAVA_OPTS:$JAVA_OPTS"
2 ï¼å¯¹äºæå¡å¨ä¸ oracle èªå¸¦ç JSP server ï¼æ¾å° jserv.properties è¿ä¸ªé
ç½®æ件ï¼å¨ä¸é¢æ·»å ï¼
wrapper.env=DISPLAY=<SERVERNAME>:0
3 ï¼æè
ç¨root身份æ§è¡ä¸ä¸xhost +å½ä»¤ï¼
第ä¸ç§æ
åµï¼DISPLAYå¨è¿ç¨æ°æ®åºä¸æ²¡ææ£ç¡®å®ä¹ï¼éè¦ï¼
set DISPLAY=localComputer:0
export DISPLAY(åå³äºshellçä¸åèå½ä»¤ä¸å)
第äºç§æ
åµï¼å¾å½¢çé¢çåè½ä¸è½å¨è¿ç¨ç»éçç¨æ·ä¸å®ä¹å使ç¨ï¼éè¦ï¼
使ç¨oracleç¨æ·ç»å½xwindow:åºç¨xhost +å½ä»¤
å¥ä»¬ä½ çæ说çå¯¹ä½ æ帮å©åæå°±ç¥éé£ä¹å¤äº