spring 生成Excel和PDF文件

          HTML頁面并不總是向用戶顯示數據輸出的最好方式,有時候需要生成不可改變的文件打印,PDF可能是種不錯的選擇。

          Spring支持從數據動態生成PDF或Excel文件

          下面這個簡單實現的例子實現了spring輸出PDF和Excel文件,為了使用Excel電子表格,你需要在你的classpath中加入poi-2.5.1.jar庫文件,而對PDF文件,則需要iText.jar文件。它們都包含在Spring的主發布包中。

          下面是測試項目代碼:


          1、控制器配置代碼
          <?xml?version="1.0"?encoding="UTF-8"?>
          <!DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"?"http://www.springframework.org/dtd/spring-beans.dtd">

          <beans>
          ????
          <bean?id="beanNameViewResolver"
          ????????class
          ="org.springframework.web.servlet.view.BeanNameViewResolver"?/>

          ????
          <bean?id="viewController"?class="com.zhupan.spring.ViewController"?/>
          ????
          <bean?id="urlMapping"
          ????????class
          ="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
          ????????
          <property?name="mappings">
          ????????????
          <props>
          ????????????????
          <prop?key="/view*.shtml">viewController</prop>
          ????????????
          </props>
          ????????
          </property>
          ????
          </bean>
          </beans>

          ?3、用于Excel視圖的視圖子類化
          為了在生成輸出文檔的過程中實現定制的行為,我們將繼承合適的抽象類。對于Excel,這包括提供一個 org.springframework.web.servlet.view.document.AbstractExcelView的子類,并實現 buildExcelDocument方法。
          package?com.zhupan.view;

          import?java.util.Date;
          import?java.util.Map;
          import?javax.servlet.http.HttpServletRequest;
          import?javax.servlet.http.HttpServletResponse;

          import?org.apache.poi.hssf.usermodel.HSSFCell;
          import?org.apache.poi.hssf.usermodel.HSSFCellStyle;
          import?org.apache.poi.hssf.usermodel.HSSFDataFormat;
          import?org.apache.poi.hssf.usermodel.HSSFRow;
          import?org.apache.poi.hssf.usermodel.HSSFSheet;
          import?org.apache.poi.hssf.usermodel.HSSFWorkbook;
          import?org.springframework.web.servlet.view.document.AbstractExcelView;


          public?class?ViewExcel?extends?AbstractExcelView?{

          ??
          public?void?buildExcelDocument(
          ?????????????Map?model,?HSSFWorkbook?workbook,
          ?????????????HttpServletRequest?request,?HttpServletResponse?response)
          ????
          throws?Exception?{
          ??
          ???????HSSFSheet?sheet?
          =?workbook.createSheet("list");
          ???????sheet.setDefaultColumnWidth((
          short)?12);
          ???????
          ???????
          ???????HSSFCell?cell?
          =?getCell(sheet,?0,?0);
          ???????setText(cell,?
          "Spring?Excel?test");
          ??
          ???????HSSFCellStyle?dateStyle?
          =?workbook.createCellStyle();
          ???????dateStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat(
          "m/d/yy"));
          ???????cell?
          =?getCell(sheet,?1,?0);
          ???????cell.setCellValue(
          new?Date());
          ???????cell.setCellStyle(dateStyle);
          ???????getCell(sheet,?
          2,?0).setCellValue(458);
          ??
          ???????HSSFRow?sheetRow?
          =?sheet.createRow(3);
          ???????
          for?(short?i?=?0;?i?<?10;?i++)?{
          ?????????????sheetRow.createCell(i).setCellValue(i?
          *?10);
          ???????}


          ??}

          ??
          }


          4、用于PDF視圖的視圖子類化
          需要象下面一樣繼承org.springframework.web.servlet.view.document.AbstractPdfView,并實現buildPdfDocument()方法。
          package?com.zhupan.view;

          import?java.util.List;
          import?java.util.Map;

          import?javax.servlet.http.HttpServletRequest;
          import?javax.servlet.http.HttpServletResponse;

          import?org.springframework.web.servlet.view.document.AbstractPdfView;

          import?com.lowagie.text.Document;
          import?com.lowagie.text.Paragraph;
          import?com.lowagie.text.pdf.PdfWriter;

          public?class?ViewPDF?extends?AbstractPdfView?{
          ????
          public?void?buildPdfDocument(Map?model,?Document?document,
          ????????????PdfWriter?writer,?HttpServletRequest?request,
          ????????????HttpServletResponse?response)?
          throws?Exception?{

          ????????List?list?
          =?(List)?model.get("list");

          ????????
          for?(int?i?=?0;?i?<?list.size();?i++)
          ????????????document.add(
          new?Paragraph((String)?list.get(i)));
          ????}


          }

          5、其他文件
          1)控制器ViewController
          package?com.zhupan.spring;

          import?java.util.ArrayList;
          import?java.util.HashMap;
          import?java.util.List;
          import?java.util.Map;

          import?javax.servlet.http.HttpServletRequest;
          import?javax.servlet.http.HttpServletResponse;

          import?org.springframework.web.servlet.ModelAndView;
          import?org.springframework.web.servlet.mvc.multiaction.MultiActionController;

          import?com.zhupan.view.ViewExcel;
          import?com.zhupan.view.ViewPDF;


          public?class?ViewController?extends?MultiActionController{
          ?????
          ?????
          public?ModelAndView?viewPDF(HttpServletRequest?request,?HttpServletResponse?response)?throws?Exception?{
          ???????List?list?
          =?new?ArrayList();
          ???????Map?model
          =new?HashMap();
          ???????list.add(
          "test1");
          ???????list.add(
          "test2");
          ???????model.put(
          "list",list);
          ???????ViewPDF?viewPDF
          =new?ViewPDF();
          ???????
          return?new?ModelAndView(viewPDF,model);
          ??}

          ?????
          ??????
          public?ModelAndView?viewExcel(HttpServletRequest?request,?HttpServletResponse?response)?throws?Exception?{
          ????????????List?list?
          =?new?ArrayList();
          ????????Map?model
          =new?HashMap();
          ????????list.add(
          "test1");
          ????????list.add(
          "test2");
          ????????model.put(
          "list",list);
          ????????ViewExcel?viewExcel
          =new?ViewExcel();
          ????????
          return?new?ModelAndView(viewExcel,model);
          ??????}

          }
          2)web.xml
          <?xml?version="1.0"?encoding="UTF-8"?>
          <web-app?version="2.4"?xmlns="http://java.sun.com/xml/ns/j2ee"
          ????xmlns:xsi
          ="http://www.w3.org/2001/XMLSchema-instance"
          ????xsi:schemaLocation
          ="http://java.sun.com/xml/ns/j2ee?
          ????http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
          >

          ????
          <display-name>springPDFTest</display-name>
          ????
          <servlet>
          ????????
          <servlet-name>springPDFTest</servlet-name>
          ????????
          <servlet-class>
          ????????????org.springframework.web.servlet.DispatcherServlet
          ????????
          </servlet-class>
          ????????
          <load-on-startup>1</load-on-startup>
          ????
          </servlet>

          ????
          <servlet-mapping>
          ????????
          <servlet-name>springPDFTest</servlet-name>
          ????????
          <url-pattern>*.shtml</url-pattern>
          ????
          </servlet-mapping>

          ????
          <welcome-file-list>
          ????????
          <welcome-file>index.jsp</welcome-file>
          ????
          </welcome-file-list>

          </web-app>

          3)index.jsp
          <%@?page?contentType="text/html;?charset=gb2312"%>

          <a?href="viewPDF.shtml">PDF視圖打開?</a>
          <br>
          <a?href="viewExcel.shtml">Excel視圖打開</a>


          posted on 2006-10-07 13:29 nbt 閱讀(641) 評論(0)  編輯  收藏 所屬分類: Spring框架

          <2006年10月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導航

          統計

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          Java技術網站

          友情鏈接

          國內一些開源網站

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 筠连县| 景东| 罗山县| 肥西县| 花莲市| 清河县| 武义县| 永修县| 从化市| 清新县| 阳新县| 漳州市| 镇赉县| 石家庄市| 新竹市| 延庆县| 长垣县| 庄河市| 顺义区| 中西区| 中牟县| 改则县| 体育| 五指山市| 张北县| 南陵县| 焦作市| 十堰市| 万州区| 阳高县| 沙河市| 长岛县| 湘阴县| 香格里拉县| 礼泉县| 那曲县| 安福县| 永春县| 济源市| 呼伦贝尔市| 石楼县|