热门文章 | 热门软件| 热门源码 | 热门电影 | 知识库 | 联系我们
软件 源码 教程 影视 健康 招聘
  HTML | JavaScript | ASP | PHP | JSP | NET | VB | VC | VF | Windows | Linux | Mysql | Mssql | Oracle | Struts 
当前位置: 创世纪计算机资源网 -> 文章频道 ->struts 
站内搜索:
webwork输出PDF,CSV,XLS,HTML(1)
作者:阿栋 来源:blog 整理日期:2007-8-13

    JasperReports是领先的java开源报表库。她将.jrxml编译为.jasper文件,她可以被转换为多种格式输出(PDF,CSV,XLS,HTML)。webwork action用来创建对象的list,而JasperReport Result用这个list来填充模版。
WW已经很好的集合了JasperReport,添加相应的java包,如bsh-2.0b4.jar,itext-1.3.1.jar,iTextAsian.jar,jasperreports-1.3.1.jar,poi-2.0-final-20040126.jar,commons-*.jar等包;新建action,

import com.opensymphony.webwork.ServletActionContext;

import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;

public class JasperAction extends BaseAction {
private List myList;

public List getMyList() {
return myList;
}

public void setMyList(List myList) {
this.myList = myList;
}

private String format = "pdf";
private String WebDir = null;

public String getFormat() {
return format;
}

public void setFormat(String format) {
this.format = format;
}

public String getWebDir() {
return WebDir;
}

// used only in during junit test
public void setWebDir(String webDir) {
WebDir = webDir;
}

public String execute() throws Exception {
myList = userManager.getUsers(null);
// Map parameters = new HashMap();
// String ctxPath = ServletActionContext.getServletContext().getRealPath("/");
// parameters.put("format", "pdf");
// if (WebDir != null){
// parameters.put("WEBDIR", WebDir);
// }

try{
// JasperCompileManager.compileReportToFile("/WEB-INF/reports/userList.jrxml","/WEB-INF/reports/userList.jasper");
// prepare report and data
InputStream is = ServletActionContext.getServletContext().getResourceAsStream("/WEB-INF/reports/userList.jrxml");
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(myList);

// // generate pdf file
// JasperDesign jasperDesign = JRXmlLoader.load(is);
// JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
// JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, ds);
// JasperExportManager.exportReportToPdfFile(jasperPrint, ctxPath + "/resources/userList.pdf");

// addMessag("errors.detail", "file created: " + ctxPath + "/resources/userList.pdf");
}
catch(Exception e){
e.printStackTrace();
log.error(e);
return ERROR;
}
// if all goes well ..
return SUCCESS;
}
}

Jasper模版,JR使用一种特殊的XML页面定义模版,它会被编译为.jasper文件,这些模版可以用iReport来设计。

<?xml version="1.0" encoding="UTF-8"  ?>
<!-- Created with iReport - A designer for JasperReports -->
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport
         name="userList"
         columnCount="1"
         printOrder="Vertical"
         orientation="Portrait"
         pageWidth="595"
         pageHeight="842"
         columnWidth="535"
         columnSpacing="0"
         leftMargin="30"
         rightMargin="30"
         topMargin="20"
         bottomMargin="20"
         whenNoDataType="NoPages"
         isTitleNewPage="false"
         isSummaryNewPage="false">
    <property name="ireport.scriptlethandling" value="0" />
    <property name="ireport.encoding" value="UTF-8" />
    <import value="java.util.*" />
    <import value="net.sf.jasperreports.engine.*" />
    <import value="net.sf.jasperreports.engine.data.*" />

    <queryString language="hql"><![CDATA[from User]]></queryString>

    <field name="lastName" class="java.lang.String"/>
    <field name="firstName" class="java.lang.String"/>
    <field name="username" class="java.lang.String"/>
    <field name="address" class="com.boyi.common.model.Address"/>
    <field name="address.country" class="java.lang.String"/>

[1]  [2]  [3]  
相关文章