`

spring 生成Excel和PDF文件

    博客分类:
  • java
阅读更多

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">viewControllerprop>  
               <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);   
            }   
      
        }   
      
    }  

 

注意:如果要输出中文,需要制定编码

//中文显示指定编码

        cell1.setEncoding(HSSFCell.ENCODING_UTF_16);

 

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);   
        }   
    }   

  

<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


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

转载自:http://www.iteye.com/topic/26415

 

分享到:
评论

相关推荐

    用spring MVC 生成Excel和PDF.docx

    这个例子展示了如何使用 Spring MVC 和相关的库(Apache POI 和 iText)来动态生成 Excel 和 PDF 文件,提供给用户下载。整个流程涉及到 Spring MVC 的配置、控制器的编写以及与第三方库的集成,实现了从数据到视图...

    SpringMVC:生成Excel和PDF

    这篇博文“SpringMVC:生成Excel和PDF”主要探讨了如何在SpringMVC应用中创建并导出两种常见文档格式——Excel和PDF。 Excel是Microsoft Office套件中的一个电子表格程序,而PDF(Portable Document Format)则是一...

    word、excel、ppt转pdf,spring boot小demo

    本项目是一个基于Spring Boot框架实现的实用工具,用于将Microsoft Office的三种常见文件格式——Word(.docx)、Excel(.xlsx)和PowerPoint(.pptx)转换为PDF格式。这个小Demo提供了完整的功能,无需任何水印,...

    Spring 实现excel及pdf导出表格示例

    在Spring框架中,实现Excel和PDF表格的导出是一项常见的需求,尤其在数据报表和数据分析场景中。本文将详细介绍如何利用Spring MVC来完成这个功能。 首先,我们关注Excel的导出。在提供的代码片段中,可以看到使用...

    SpringBoot整合poi实现Excel文件的导入和导出.pdf

    这两个依赖分别用于处理低级别(如HSSF)和高级别(如XSSF,适用于Excel 2007及以上版本)的Excel文件。 接下来,我们创建一个名为`ExcelFormatUtil`的工具类,这个类主要负责对单元格的数据格式进行判断,并返回...

    springboot实现根据指定pdf、word模板文件填充值到文件里面,生成对应的文件

    在Spring Boot中,我们可以创建一个服务,该服务接受Word模板文件和数据,然后使用POI API将数据填入模板中的占位符,最后生成一个新的Word文档。 对于PDF文件的处理,我们可以使用iText库。iText是一个强大的PDF...

    struts2+hibernate+spring+jfreechart+导出excel+导出pdf完美整合.zip

    在Java中,可以使用Apache POI库来操作Excel文件,iText库来生成PDF文件。 导出Excel功能通常涉及到读取数据源,如数据库或文件,然后将数据填充到Excel工作表中。而导出PDF则需要将HTML、文本或图像转换成PDF格式...

    完美整合框架包(Spring+SpringMVC+mybitas+文件上传下载+邮件+短信支持+生成PDF、Excel)

    标题中的“完美整合框架包”指的是一个集合了多个核心Java技术的综合应用,这些技术包括Spring、SpringMVC、MyBatis以及相关的辅助功能,如文件上传下载、邮件服务、短信支持、PDF和Excel的生成。这个框架整合的目的...

    Excel2Pdf源码

    Excel提供了丰富的表格和数据分析工具,而PDF则常用于保证文件在不同设备上的显示一致性。 另一个标签 "Excel PDF" 表明了转换的目标格式。PDF(Portable Document Format)是一种通用的文件格式,能够保留原始文档...

    根据文件模板实现预览、生成word、pdf、excel(后端-项目)

    生成Word、PDF和Excel文件则涉及不同的技术栈。对于Word,我们可以利用`python-docx`(Python)或Apache POI(Java)等库,它们允许我们操作Word文档的各个元素,如段落、表格、图片等。PDF生成通常有多种选择,如...

    easypoi导入导出excel表格.pdf

    - **easypoi-base**: 导入导出包,是核心功能所在,它提供了数据和Excel文件互相转换的核心实现。 - **easypoi-web**: 这个包提供了与Spring MVC整合的视图工具,简化了在Spring Web环境下进行导出的操作,但非必须...

    struts,hibernate,spring,jfreechart,导出excel,导出pdf 完美整合

    Struts、Hibernate、Spring、JFreeChart以及Excel和PDF导出是Java开发中常见的技术,它们在企业级应用开发中有着广泛的应用。这些技术的整合能够构建出功能强大的Web应用程序,提供数据展示、数据处理以及文件导出等...

    OpenPDF是用于创建和编辑PDF文件的开源Java库

    7. **PDF文档操作**:除了创建,OpenPDF还能读取和修改已存在的PDF文件,比如添加、删除、移动页面,或者合并多个PDF文件。 8. **事件处理**:开发者可以通过注册监听器来处理PDF生成过程中的各种事件,如页眉页脚...

    struts、 hibernate、 spring、 jfreechart、 导出excel、 导出pdf 完美整合

    通过它,开发者可以创建新的工作簿,添加工作表,设置单元格值,样式,公式等,实现从程序中动态生成Excel报表。 6. **导出PDF**:PDF(Portable Document Format)是一种通用的文件格式,常用于保存文档的原始布局...

    java实现导出excel、word、 pdf

    在Java编程中,导出Excel、Word和PDF是常见...总之,Java通过各种库如Apache POI和iText提供了强大的能力来处理Excel、Word和PDF文件的导出。理解并熟练运用这些库,可以帮助你实现高效的数据导出功能,满足业务需求。

    (源码)基于Spring Boot和EasyPOI的ExcelWordPDF导出管理系统.zip

    它提供了强大的功能,能够方便地进行Excel、Word和PDF文件的导出操作,支持大数据量的导出、模板导出以及多种格式的转换。 ## 项目的主要特性和功能 ### Excel导出 Excel导出支持常规Excel导出、大数据量导出、...

    java导出Excel文件.pdf

    在本文档中,我们将深入探讨如何使用Java技术栈实现导出Excel文件的功能...以上知识点涵盖了从Java后端文件生成、数据处理到前端页面触发和下载文件的整个过程,展现了在Java技术栈中实现Excel文件导出功能的技术细节。

    springboot-批量生成二维码

    这个项目结合了Spring Boot的Web开发能力、Java的文件处理和二维码生成技术,以及前端的交互设计,是一个综合性的实践案例,有助于开发者提升在这些领域的技能。通过学习和实践,开发者可以更好地理解如何将这些技术...

Global site tag (gtag.js) - Google Analytics