• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > Spring 实现excel及pdf导出表格示例

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

作者:DFDHZ 字体:[增加 减小] 来源:互联网 时间:2017-05-28

DFDHZ 通过本文主要向大家介绍了springmvc示例,spring示例,spring框架开发示例,spring aop编程示例,spring实现原理等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

整理文档,搜刮出一个Spring 实现excel及pdf导出表格的代码,稍微整理精简一下做下分享。

excel 导出:

package light.mvc.utils.excel; 
 
import java.util.Date; 
import java.util.List; 
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.HSSFFont; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.springframework.web.servlet.view.document.AbstractExcelView; 
 
import light.mvc.pageModel.sys.Log; 
import light.mvc.utils.Tools; 
 
 
public class ExcelView extends AbstractExcelView{ 
   
  private HSSFSheet sheet; 
  private HSSFCell cell; 
 
  @Override 
  protected void buildExcelDocument(Map<String, Object> model, 
      HSSFWorkbook workbook, HttpServletRequest request, 
      HttpServletResponse response) throws Exception { 
    // TODO Auto-generated method stub 
    Date date = new Date(); 
    String filename = Tools.date2Str(date, "yyyyMMddHHmmss"); 
    String title_content = (String) model.get("title_content"); 
    response.setContentType("application/octet-stream"); 
    response.setHeader("Content-Disposition", "attachment;filename="+filename+".xls"); 
    sheet = workbook.createSheet(title_content); 
     
    List<String> titles = (List<String>) model.get("titles"); 
    int len = titles.size(); 
    HSSFCellStyle headerStyle = workbook.createCellStyle(); //标题样式 
    headerStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); 
    headerStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); 
    HSSFFont headerFont = workbook.createFont();  //标题字体 
    headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); 
    headerFont.setFontHeightInPoints((short)11); 
    headerStyle.setFont(headerFont); 
    short width = 20,height=25*20; 
    sheet.setDefaultColumnWidth(width); 
    for(int i=0; i<len; i++){ //设置标题 
      String title = titles.get(i); 
      cell = getCell(sheet, 0, i); 
      cell.setCellStyle(headerStyle); 
      setText(cell,title); 
    } 
    sheet.getRow(0).setHeight(height); 
     
    HSSFCellStyle contentStyle = workbook.createCellStyle(); //内容样式 
    contentStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); 
    String type = (String) model.get("type"); 
    if ("log".equals(type)){ 
      List<Log> logList = (List<Log>) model.get("list"); 
      logExcel(logList, contentStyle); 
    } 
     
  } 
  /** 
   * 
  * @Title: logExcel 
  * @Description: 日志导出 
  * @param @param logList 
  * @param @param contentStyle 
  * @return void 
  * @throws 
   */ 
  public void logExcel(List<Log> logList, HSSFCellStyle contentStyle){ 
    int logCount = logList.size(); 
    if (logList != null && logCount > 0){ 
      for(int i=0; i<logCount; i++){ 
        Log log = logList.get(i); 
        String loginname = log.getLoginname(); 
        cell = getCell(sheet, i+1, 0); 
        cell.setCellStyle(contentStyle); 
        setText(cell,loginname); 
         
        String username = log.getName(); 
        cell = getCell(sheet, i+1, 1); 
        cell.setCellStyle(contentStyle); 
        setText(cell,username); 
         
        String IP = log.getIp(); 
        cell = getCell(sheet, i+1, 2); 
        cell.setCellStyle(contentStyle); 
        setText(cell,IP); 
         
        String organizationName = log.getOrganizationName(); 
        cell = getCell(sheet, i+1, 3); 
        cell.setCellStyle(contentStyle); 
        setText(cell,organizationName); 
         
        String usertype = log.getUsertype()==0 ? "管理员" : "员工"; 
        cell = getCell(sheet, i+1, 4); 
        cell.setCellStyle(contentStyle); 
        setText(cell,usertype); 
         
        String msg = log.getMsg(); 
        cell = getCell(sheet, i+1, 5); 
        cell.setCellStyle(contentStyle); 
        setText(cell,msg); 
         
        Date lastLogin = log.getCreatedatetime()!=null ? log.getCreatedatetime() : null; 
        cell = getCell(sheet, i+1, 6); 
        cell.setCellStyle(contentStyle); 
        setText(cell,Tools.date2Str(lastLogin)); 
      } 
    } 
  } 
} 
</div>

pdf导出:

重写spring调用itext

package light.mvc.utils.pdf; 
import java.io.ByteArrayOutputStream; 
import java.io.OutputStream; 
import java.util.Map; 
 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import org.springframework.web.servlet.view.AbstractView;  
import com.itextpdf.text.Document; 
import com.itextpdf.text.DocumentException; 
import com.itextpdf.text.PageSize; 
import com.itextpdf.text.pdf.PdfWriter; 
 
/** 
 * 这里就全部复制spring 的,然后引入的东西改成第5版的就行了 代码 几乎不变,唯一变的是引用路径~。 
 * 
 * 
 */ 
public abstract class AbstractIText5PdfView extends AbstractView { 
  public AbstractIText5PdfView() { 
    setContentType("application/pdf"); 
  } 
 
  @Override 
  protected boolean generatesDownloadContent() { 
    return true; 
  } 
 
  @Override 
  protected final void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, 
      HttpServletResponse response) throws Exception { 
    // 获得流 
    ByteArrayOutputStream baos = createTemporaryOutputStream(); 
    Document document = newDocument(); 
    PdfWriter writer = newWriter(document, baos); 
    prepareWriter(model, writer, request); 
    buildPdfMetadata(model, document, request); 
    document.open(); 
    buildPdfDocument(model, document, writer, request, response); 
    document.close(); 
    writeToResponse(response, baos); 
  } 
 
  protected Document newDocument() { 
    return new Document(PageSize.A4); 
  } 
 
  protected PdfWriter newWriter(Document document, OutputStream os) throws DocumentException { 
    return PdfWriter.getInstance(document, os); 
  } 
 
  protected void prepareWriter(Map<String, Object> model, PdfWriter writer, HttpServletRequest request) 
      throws DocumentException { 
 
    writer.setViewerPreferences(getViewerPreferences()); 
  } 
 
  protected int getViewerPreferences() { 
    return PdfWriter.ALLOW_PRINTING | PdfWriter.PageLayoutSinglePage; 
  } 
 
  protected void buildPdfMetadata(Map<String, Object> model, Document document, HttpServletRequest request) { 
  } 
 
  protected abstract void buildPdfDocument(Map<String, Object> model, Document document, PdfWriter writer, 
      HttpServletRequest request, HttpServletResponse response) throws Exception; 
} 

</div>

pdf 公共类

package light.mvc.utils.pdf; 
 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.Map; 
 
import com.itextpdf.text.Chunk; 
import com.itextpdf.text.DocumentException; 
import com.itextpdf.text.Font; 
import com.itextpdf.text.Paragraph; 
import com.itextpdf.text.pdf.BaseFont; 
 
/** 
* @ClassName: PDFUtil 
* @Description: 
* @author liuyajun 
* @date 2017年3月2日 下午1:21:21 
* 
*/ 
public class PDFUtil { 
  // 对参数的封装形式比如{name} 
  public static final String BEGIN = "{"; 
  public static final String END = "}"; 
  // 换行形式{#} 
  public static final String NEW_LINE = "#"; 
  // 默认的行间距、首行距离等,自己添加 
  public static final float DEFAULT_LEADING = 20; 
  public static final float DEFAULT_LINE_INDENT = 30; 
   
   
  // 基本字体和样式 
  public static BaseFont bfChinese; 
  public static Font fontChinese; 
  public st



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Spring 实现excel及pdf导出表格示例
  • SpringMVC之简单的增删改查示例(SSM整合)
  • SpringMVC之简单的增删改查示例(SSM整合)

相关文章

  • 2017-05-28mybatis高级映射一对多查询实现代码
  • 2017-05-28Spring Data + Thymeleaf 3 + Bootstrap 4 实现分页器实例代码
  • 2017-05-28Java正则匹配中文的方法实例分析
  • 2017-05-28Spring Boot启动过程完全解析(二)
  • 2017-05-28如何把spring boot项目部署到tomcat容器中
  • 2017-09-13java中Collection对象的使用
  • 2017-05-28Java中final,finally,finalize三个关键字的区别_动力节点Java学院整理
  • 2017-05-28实例解析JAVA中代码的加载顺序
  • 2017-05-28Struts2的输入校验实例代码
  • 2017-05-28JAVA线程sleep()和wait()详解及实例

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Java中LinkedList详解和使用示例_动力节点Java学院整理
    • Java多线程的调度_动力节点Java学院整理
    • 实例解析Java设计模式编程中的适配器模式使用
    • Java 变量类型及其实例
    • Java中SimpleDateFormat用法详解
    • Spring Boot的listener(监听器)简单使用实例详解
    • java中FileOutputStream中文乱码问题解决办法
    • Java NIO:浅析IO模型_动力节点Java学院整理
    • java 基础之JavaBean属性命名规范问题
    • 详解Spring MVC事务配置

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有