`
zy77612
  • 浏览: 286023 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

生成Excel 和PDF报表

阅读更多
HTML页面并不总是向用户显示数据输出的最好方式,有时候需要生成不可改变的文件打印,PDF可能是种不错的选择。

Spring支持从数据动态生成PDF或Excel文件

下面这个简单实现的例子实现了spring输出PDF和Excel文件,为了使用Excel电子表格,你需要在你的classpath中加入poi-2.5.1.jar库文件,而对PDF文件,则需要iText.jar文件。它们都包含在Spring的主发布包中。

下面是测试项目代码:


1、控制器配置代码

xml 代码
  1. xml version="1.0" encoding="UTF-8"?>  
  2. DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">  
  3.   
  4. <beans>  
  5.     <bean id="beanNameViewResolver"  
  6.         class="org.springframework.web.servlet.view.BeanNameViewResolver" />  
  7.   
  8.     <bean id="viewController" class="com.zhupan.spring.ViewController" />  
  9.     <bean id="urlMapping"  
  10.         class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
  11.         <property name="mappings">  
  12.             <props>  
  13.                 <prop key="/view*.shtml">viewControllerprop>  
  14.             props>  
  15.         property>  
  16.     bean>  
  17. beans>  

 3、用于Excel视图的视图子类化
为了在生成输出文档的过程中实现定制的行为,我们将继承合适的抽象类。对于Excel,这包括提供一个 org.springframework.web.servlet.view.document.AbstractExcelView的子类,并实现 buildExcelDocument方法。
java 代码
  1. package com.zhupan.view;   
  2.   
  3. import java.util.Date;   
  4. import java.util.Map;   
  5. import javax.servlet.http.HttpServletRequest;   
  6. import javax.servlet.http.HttpServletResponse;   
  7.   
  8. import org.apache.poi.hssf.usermodel.HSSFCell;   
  9. import org.apache.poi.hssf.usermodel.HSSFCellStyle;   
  10. import org.apache.poi.hssf.usermodel.HSSFDataFormat;   
  11. import org.apache.poi.hssf.usermodel.HSSFRow;   
  12. import org.apache.poi.hssf.usermodel.HSSFSheet;   
  13. import org.apache.poi.hssf.usermodel.HSSFWorkbook;   
  14. import org.springframework.web.servlet.view.document.AbstractExcelView;   
  15.   
  16. public class ViewExcel extends AbstractExcelView {   
  17.   
  18.     public void buildExcelDocument(Map model, HSSFWorkbook workbook,   
  19.             HttpServletRequest request, HttpServletResponse response)   
  20.             throws Exception {   
  21.   
  22.         HSSFSheet sheet = workbook.createSheet("list");   
  23.         sheet.setDefaultColumnWidth((short12);   
  24.   
  25.         HSSFCell cell = getCell(sheet, 00);   
  26.         setText(cell, "Spring Excel test");   
  27.   
  28.         HSSFCellStyle dateStyle = workbook.createCellStyle();   
  29.         dateStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));   
  30.         cell = getCell(sheet, 10);   
  31.         cell.setCellValue(new Date());   
  32.         cell.setCellStyle(dateStyle);   
  33.         getCell(sheet, 20).setCellValue(458);   
  34.   
  35.         HSSFRow sheetRow = sheet.createRow(3);   
  36.         for (short i = 0; i < 10; i++) {   
  37.             sheetRow.createCell(i).setCellValue(i * 10);   
  38.         }   
  39.   
  40.     }   
  41.   
  42. }  

4、用于PDF视图的视图子类化
需要象下面一样继承org.springframework.web.servlet.view.document.AbstractPdfView,并实现buildPdfDocument()方法。
java 代码
  1. package com.zhupan.view;   
  2.   
  3. import java.util.List;   
  4. import java.util.Map;   
  5.   
  6. import javax.servlet.http.HttpServletRequest;   
  7. import javax.servlet.http.HttpServletResponse;   
  8.   
  9. import org.springframework.web.servlet.view.document.AbstractPdfView;   
  10.   
  11. import com.lowagie.text.Document;   
  12. import com.lowagie.text.Paragraph;   
  13. import com.lowagie.text.pdf.PdfWriter;   
  14.   
  15. public class ViewPDF extends AbstractPdfView {   
  16.     public void buildPdfDocument(Map model, Document document,   
  17.             PdfWriter writer, HttpServletRequest request,   
  18.             HttpServletResponse response) throws Exception {   
  19.   
  20.         List list = (List) model.get("list");   
  21.   
  22.         for (int i = 0; i < list.size(); i++)   
  23.             document.add(new Paragraph((String) list.get(i)));   
  24.     }   
  25.   
  26. }   
5、其他文件
1)控制器ViewController
java 代码
  1. package com.zhupan.spring;   
  2.   
  3. import java.util.ArrayList;   
  4. import java.util.HashMap;   
  5. import java.util.List;   
  6. import java.util.Map;   
  7.   
  8. import javax.servlet.http.HttpServletRequest;   
  9. import javax.servlet.http.HttpServletResponse;   
  10.   
  11. import org.springframework.web.servlet.ModelAndView;   
  12. import org.springframework.web.servlet.mvc.multiaction.MultiActionController;   
  13.   
  14. import com.zhupan.view.ViewExcel;   
  15. import com.zhupan.view.ViewPDF;   
  16.   
  17. public class ViewController extends MultiActionController {   
  18.   
  19.     public ModelAndView viewPDF(HttpServletRequest request,   
  20.             HttpServletResponse response) throws Exception {   
  21.         List list = new ArrayList();   
  22.         Map model = new HashMap();   
  23.         list.add("test1");   
  24.         list.add("test2");   
  25.         model.put("list", list);   
  26.         ViewPDF viewPDF = new ViewPDF();   
  27.         return new ModelAndView(viewPDF, model);   
  28.     }   
  29.   
  30.     public ModelAndView viewExcel(HttpServletRequest request,   
  31.             HttpServletResponse response) throws Exception {   
  32.         List list = new ArrayList();   
  33.         Map model = new HashMap();   
  34.         list.add("test1");   
  35.         list.add("test2");   
  36.         model.put("list", list);   
  37.         ViewExcel viewExcel = new ViewExcel();   
  38.         return new ModelAndView(viewExcel, model);   
  39.     }   
  40. }  
2)web.xml
xml 代码
  1. xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee    
  5.     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  6.   
  7.     <display-name>springPDFTestdisplay-name>  
  8.     <servlet>  
  9.         <servlet-name>springPDFTestservlet-name>  
  10.         <servlet-class>  
  11.             org.springframework.web.servlet.DispatcherServlet   
  12.         servlet-class>  
  13.         <load-on-startup>1load-on-startup>  
  14.     servlet>  
  15.   
  16.     <servlet-mapping>  
  17.         <servlet-name>springPDFTestservlet-name>  
  18.         <url-pattern>*.shtmlurl-pattern>  
  19.     servlet-mapping>  
  20.   
  21.     <welcome-file-list>  
  22.         <welcome-file>index.jspwelcome-file>  
  23.     welcome-file-list>  
  24.   
  25. web-app>  

3)index.jsp

<href="viewPDF.shtml">PDF视图打开 a>
<br>
<href="viewExcel.shtml">Excel视图打开a>
 
 

分享到:
评论

相关推荐

    基于javaweb的学生宿舍管理系统.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用,资源为网络商品(电子资料类)基于网络商品和电子资料商品的性质和特征不支持退款,质量优质,放心下载使用

    最新更新!!国家农业龙头企业数量(2010-2022年)

    ## 1、数据简介 国家农业龙头企业数量主要指的是经过国家相关部门认定,并在农业产业化方面发挥重要引领作用的企业的总数。这些企业通常以农产品加工或流通为主业,通过各种利益联结机制与农户相联系,带动农户进入市场,实现农产品生产、加工、销售的有机结合和相互促进。 数据名称:国家农业龙头企业数量 数据年份:2010-2022年 ## 02、相关数据 省份、年份、龙头企业数量。

    基于struts2+spring+mybites的二手车交易信息网站(毕设&课设&实训&大作业&竞赛&项目)

    这是一个二手车交易信息网站,用struts2+spring+mybites写的,数据库放在webContent目录下的。.zip项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用,资源为网络商品(电子资料类)基于网络商品和电子资料商品的性质和特征不支持退款

    集工单统计、任务钩子、权限管理、灵活配置流程与模版等工单系统

    本系统是集工单统计、任务钩子、权限管理、灵活配置流程与模版等等于一身的开源工单系统,当然也可以称之为工作流引擎。 致力于减少跨部门之间的沟通,自动任务的执行,提升工作效率与工作质量,减少不必要的工作量与人为出错率。

    Qt5.12Linux+Win安装包-压缩分卷00(共10卷)

    第00卷,密码在对应的文章内。

    Linux Mint-15.zip

    目录: linuxmint-15-cinnamon-dvd-32bit linuxmint-15-cinnamon-dvd-64bit linuxmint-15-kde-dvd-32bit linuxmint-15-kde-dvd-64bit linuxmint-15-mate-dvd-32bit linuxmint-15-mate-dvd-64bit linuxmint-15-xfce-dvd-32bit linuxmint-15-xfce-dvd-64bit 网盘文件永久链接

    chromedriver-win32-135.0.7031.0(Canary).zip

    chromedriver-win32-135.0.7031.0(Canary).zip

    STM32开发:IIR带阻滤波器设计与实现,含巴特沃斯和切比雪夫滤波器MATLAB程序,STM32开发中IIR带阻滤波器的实现与巴特沃斯滤波器设计详解:附MATLAB程序,STM32开发 IIR带阻滤

    STM32开发:IIR带阻滤波器设计与实现,含巴特沃斯和切比雪夫滤波器MATLAB程序,STM32开发中IIR带阻滤波器的实现与巴特沃斯滤波器设计详解:附MATLAB程序,STM32开发 IIR带阻滤波器 STM32实现IIR无限冲击响应带阻滤波器设计,巴特沃斯滤波器,代码工整,自编代码,注释详细,赠送巴特沃斯和切比雪夫IIR带阻滤波器MATLAB程序 ,STM32开发; IIR带阻滤波器; 无限冲击响应; 巴特沃斯滤波器; 自编代码; 注释详细; MATLAB程序,STM32中IIR带阻滤波器设计与实现

    遵循HTTP协议,编写HTML生成器生成前端界面,完成简单的博客系统.zip(课设&实训&大作业&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用,资源为网络商品(电子资料类)基于网络商品和电子资料商品的性质和特征不支持退款

    基于ssh&amp;acegi的简单b2c电子商务网站.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用,资源为网络商品(电子资料类)基于网络商品和电子资料商品的性质和特征不支持退款,质量优质,放心下载使用

    纯电动汽车仿真研究:基于Matlab Simulink与Simscape的车辆模型动力性、经济性及续航里程分析,基于Matlab Simulink与Simscape的纯电动汽车动力、经济性及续航里程仿

    纯电动汽车仿真研究:基于Matlab Simulink与Simscape的车辆模型动力性、经济性及续航里程分析,基于Matlab Simulink与Simscape的纯电动汽车动力、经济性及续航里程仿真模型探究,纯电动汽车仿真、纯电动公交、纯电动客车、纯电动汽车动力性仿真、经济性仿真、续航里程仿真。 模型包括电机、电池、车辆模型。 有两种模型2选1: 1 完全用matlab simulink搭建的模型。 2用simscape搭建的车辆模型。 ,纯电动汽车仿真; 纯电动公交; 纯电动客车; 动力性仿真; 经济性仿真; 续航里程仿真; 模型(电机、电池、车辆模型); MATLAB Simulink模型; Simscape车辆模型。,纯电动交通工具仿真模型研究:基于Matlab Simulink与Simscape的电池、电机及车辆性能分析

    MATLAB代码:电转气P2G与碳捕集设备在热电联供综合能源系统中的优化调度模型研究:融入碳交易机制的非线性模型高效求解 ,MATLAB环境下结合P2G技术与碳捕集设备的综合能源系统优化调度模型,包括

    MATLAB代码:电转气P2G与碳捕集设备在热电联供综合能源系统中的优化调度模型研究:融入碳交易机制的非线性模型高效求解。,MATLAB环境下结合P2G技术与碳捕集设备的综合能源系统优化调度模型,包括热电联产与低碳调度,借鉴碳交易机制实现高效求解。,MATLAB代码:考虑P2G和碳捕集设备的热电联供综合能源系统优化调度模型 注意:店铺内有大量考虑碳交易代码,欢迎咨询 关键词:碳捕集 综合能源系统 电转气P2G 热电联产 低碳调度 参考文档:《Modeling and Optimization of Combined Heat and Power with Power-to-Gas and Carbon Capture System in Integrated Energy System》完美复现 仿真平台:MATLAB yalmip+gurobi 主要内容:代码主要做的是一个考虑电转气P2G和碳捕集设备的热电联供综合能源系统优化调度模型,模型耦合CHP热电联产单元、电转气单元以及碳捕集单元,并重点考虑了碳交易机制,建立了综合能源系统运行优化模型,模型为非线性模型,采用yalmip

    课程设计 二手商城 基于springboot后台管理.zip(课设&实训&大作业&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用,资源为网络商品(电子资料类)基于网络商品和电子资料商品的性质和特征不支持退款,质量优质,放心下载使用

    19考试真题最近的t37.txt

    19考试真题最近的t37.txt

    (参考项目)MATLAB交通道路标识识别.zip

    MATLAB交通标志识别系统可以通过图像处理和机器学习技术来识别道路上的不同交通标志。这个系统可以通过以下步骤来实现: 1. **数据收集**:收集具有不同交通标志的图像作为训练集,可以使用公开的交通标志数据集或者自己创建一个数据集。 2. **图像预处理**:对采集到的图像进行预处理,比如去噪、调整大小、灰度化等操作,以便更好地进行特征提取。 3. **特征提取**:从预处理后的图像中提取特征,例如颜色、形状、纹理等特征,以便训练分类器。 4. **分类器训练**:使用机器学习算法(如支持向量机、人工神经网络等)对提取的特征进行训练,以建立交通标志的分类模型。 5. **标志识别**:使用训练好的分类器对新的图像进行识别,并输出识别结果。 MATLAB提供了丰富的图像处理工具箱和机器学习工具箱,可以帮助实现交通标志识别系统。可以使用MATLAB编写代码来处理图像、提取特征、训练分类器和进行识别。同时,也可以借助深度学习工具箱来构建卷积神经网络(CNN)等深度学习模型进行交通标志的识别。 需要注意的是,在实际应用中,还需要考虑系统的实时性、准确性和稳定性等因素,以确保该系统在不同场景下能够有效地识别交通标志。

    双有源桥扩展技术:100kHz高频率、最小电流应力优化的3kw功率开关控制系统,双有源桥扩展技术:100kHz高频率、375-48V宽电压范围下的3kw功率控制与优化,双有源桥扩展移相控制 开关频率

    双有源桥扩展技术:100kHz高频率、最小电流应力优化的3kw功率开关控制系统,双有源桥扩展技术:100kHz高频率、375-48V宽电压范围下的3kw功率控制与优化,双有源桥扩展移相控制 开关频率100k,375-48V,功率3kw 控制方式为最小电流应力优化控制 参数可定制 ,双有源桥;扩展移相控制;开关频率100k;功率3kw;最小电流应力优化控制;参数可定制,双桥移相控制,最小电流应力优化——100k开关频率功率控制技术

    基于粒子群算法的IEEE30节点输电网最优潮流研究:以系统发电成本最小化为目标的二次函数关系优化求解,基于粒子群算法的输电网最优潮流控制研究:以IEEE30节点系统为例,探讨发电成本最小化及机组出力优

    基于粒子群算法的IEEE30节点输电网最优潮流研究:以系统发电成本最小化为目标的二次函数关系优化求解,基于粒子群算法的输电网最优潮流控制研究:以IEEE30节点系统为例,探讨发电成本最小化及机组出力优化,基于粒子群算法的最优潮流 以IEEE30节点的输电网为研究对象 以系统发电成本最小为目标函数 以机组出力为优化变量 其中出力与成本的关系是经典的二次函数关系 通过优化求解得到最佳机组出力 ,最优潮流;粒子群算法;IEEE30节点输电网;系统发电成本;机组出力优化;二次函数关系;优化求解。,基于粒子群算法的IEEE30节点输电网最优潮流研究:成本最小化与机组出力优化

    Abaqus管中管系统深水管非线性动力分析:Tube-to-Tube ITT单元的应用研究,Abaqus软件在管中管系统深水管非线性动力分析中的应用:基于Tube-to-tube ITT单元的数值模拟

    Abaqus管中管系统深水管非线性动力分析:Tube-to-Tube ITT单元的应用研究,Abaqus软件在管中管系统深水管非线性动力分析中的应用:基于Tube-to-tube ITT单元的数值模拟研究,abaqus 管中管系统 深水管非线性动力分析 Tube-to-tube ITT单元 ,Abaqus; 管中管系统; 深水管非线性动力分析; ITT单元; 节点分析; 仿真建模。,Abaqus深水管非线性动力分析中管中管系统的ITT单元应用

    springboot在线知识管理平台类智慧交通调度平台源码+论文+视频1.zip

    springboot在线知识管理平台类智慧交通调度平台源码+论文+视频1

    punkt包,加tokenizers路径

    punkt包

Global site tag (gtag.js) - Google Analytics