HTML页面并不总是向用户显示数据输出的最好方式,有时候需要生成不可改变的文件打印,PDF可能是种不错的选择。
Spring支持从数据动态生成PDF或Excel文件
下面这个简单实现的例子实现了spring输出PDF和Excel文件,为了使用Excel电子表格,你需要在你的classpath中加入poi-2.5.1.jar库文件,而对PDF文件,则需要iText.jar文件。它们都包含在Spring的主发布包中。
下面是测试项目代码:
1、控制器配置代码
xml 代码
-
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">viewControllerprop>
-
props>
-
property>
-
bean>
-
beans>
3、用于Excel视图的视图子类化
为了在生成输出文档的过程中实现定制的行为,我们将继承合适的抽象类。对于Excel,这包括提供一个 org.springframework.web.servlet.view.document.AbstractExcelView的子类,并实现 buildExcelDocument方法。
java 代码
-
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()方法。
java 代码
-
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
java 代码
-
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 代码
-
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>springPDFTestdisplay-name>
-
<servlet>
-
<servlet-name>springPDFTestservlet-name>
-
<servlet-class>
-
org.springframework.web.servlet.DispatcherServlet
-
servlet-class>
-
<load-on-startup>1load-on-startup>
-
servlet>
-
-
<servlet-mapping>
-
<servlet-name>springPDFTestservlet-name>
-
<url-pattern>*.shtmlurl-pattern>
-
servlet-mapping>
-
-
<welcome-file-list>
-
<welcome-file>index.jspwelcome-file>
-
welcome-file-list>
-
-
web-app>
3)index.jsp
<a href="viewPDF.shtml">PDF视图打开 a>
<br>
<a href="viewExcel.shtml">Excel视图打开a>
分享到:
相关推荐
这篇博文“SpringMVC:生成Excel和PDF”主要探讨了如何在SpringMVC应用中创建并导出两种常见文档格式——Excel和PDF。 Excel是Microsoft Office套件中的一个电子表格程序,而PDF(Portable Document Format)则是一...
通过这个"生成PDF报表练习(LV2018)",你可以逐步学习和掌握LABVIEW中的PDF生成技巧,进一步提升你的程序设计能力。不断实践和探索,你会发现LABVIEW不仅是一个强大的编程工具,还是一个创造无限可能的平台。
在本文中,我们将探讨如何使用Aspose.Cells构建一个EXCEL报表,并详细介绍如何使用Aspose生成EXCEL文件并转换为PDF格式。 创建Workbook和Worksheet 在使用Aspose.Cells之前,首先需要创建一个Workbook对象,然后在...
JAVA生成PDF报表.pdf 在企业的信息系统中,报表处理一直占据着重要的作用。本文将介绍一种生成PDF报表的...通过iText生成PDF报表,可以非常方便地解决B/S系统的报表处理问题,提高了报表处理的灵活性和自动化程度。
在本资料“边干边学LabVIEW报表生成.zip”中,重点讲述了如何利用LabVIEW生成Excel和Word报表,以展示和分析实验或测量数据。以下是对这些知识点的详细说明: 1. **LabVIEW的数据采集与处理**:LabVIEW能够方便地...
“LabVIEW生成报表”则是一个更宽泛的概念,它不仅包括生成Excel报表,还可能涵盖PDF、CSV等其他格式的报表。在LabVIEW中,你可以设计自定义的界面,然后将数据显示在这些界面上,形成报表。通过布局控件和数据绑定...
在Java开发中,导出Excel和PDF报表是常见的需求,特别是在数据分析、数据展示以及报告生成等场景下。本文将深入探讨如何使用Java实现这一功能,包括处理Excel和PDF的库、基本操作以及优化技巧。 首先,Java中常用的...
在本话题中,我们将深入探讨如何使用MFC来生成包含Excel数据和图表的PDF文档。 首先,我们需要明白MFC本身并不直接支持生成PDF文档,因此我们需要借助第三方库或插件。描述中提到的“需要下载一个excel生成pdf的...
在打开文件后,代码选中了工作表中的"C2:AC25"区域,这可能包含了需要转换为PDF报表的数据。 然后,代码将当前窗口切换到另一个名为"1Excel.xls"的Excel工作簿,并激活该工作簿。同时,取消工作簿的保护状态(如果...
Java生成Excel和PDF是两种常见的数据导出技术,在企业级应用中广泛使用,尤其是在报表、数据分析和文件交互场景。这两个技术分别基于不同的库,对于Java开发者来说,掌握它们的使用方法是十分重要的。 1. Java生成...
"Java生成Excel图表" Java生成Excel图表是使用Java语言来生成Excel图表的过程。Excel图表是指使用Excel软件生成的图表,例如柱状图、...但是,使用Java生成Excel图表可以提高工作效率,提高数据分析和报表生成的质量。
- 财务报告:企业经常使用Excel模板制作财务报表,然后导出为PDF分发给股东、投资者或管理层,确保数据的准确性和格式的一致性。 - 表单和合同:定制的Excel表单可以转换为PDF,用于电子签名和无纸化办公,降低...
通过上述步骤,你就可以使用C#和Itextsharp库根据模板生成PDF报表了。在实践中,你可能会遇到更多具体问题,如特殊字符处理、中文支持等,但Itextsharp库通常都有相应的解决方案。在开发过程中,查阅官方文档和社区...
8. **数据导出与分享**:生成的报表可以保存为Excel文件,方便进一步分析,也可以直接导出为PDF或其他格式,便于打印和共享。 9. **集成与扩展**:有些报表生成器能够与企业系统如ERP、CRM等集成,实现数据的无缝...
在本主题中,我们将探讨如何使用帆软报表导出各种格式,包括Excel、Word和PDF等,以便满足不同场景下的需求。 首先,我们要知道帆软报表的导出功能依赖于两个核心的Java类库:fr-server-6.5.jar和fr-third-6.5.jar...
EXCEL全套教程.pdf文件涵盖了Excel的基础知识、数据编辑和处理、数据分析和报表生成、Excel中的宏和VBA编程、数据导入和导出、Excel中的图表和报表、Excel中的其他高级功能、Excel中的打印和输出、Excel中的高级技巧...
在.NET 6框架中,开发WebApi应用时,有时我们需要处理Excel文件并将它们转换为PDF格式,以便用户能够方便地下载和查看。本教程将详细讲解如何使用C#语言实现这个功能。 首先,我们需要引入一些必要的库来支持Excel...
它们允许你创建新的PDF文档,插入文本、图像,甚至复杂的表格和图形,以便于生成专业级别的报表。 4. HTML:HTML (HyperText Markup Language) 是网页的基础,易于阅读和分享。在Java中,可以使用JSP (JavaServer ...