• 关于jsp页面转换成excel格式下载遇到问题及解决


    jsp页面转成excel格式的实现思路:

    1.使用poi包:poi-bin-3.9-20121203

     下载连接地址:http://www.apache.org/dyn/closer.cgi/poi/release/bin/poi-bin-3.9-20121203.tar.gz

      import org.apache.poi.hssf.usermodel.*;

      这个包可以帮助实现下载excel模版的设计,简单易用,功能也非常强大。

    1   HSSFWorkbook workBook = new HSSFWorkbook();//是操作Excel2003的版本,扩展名是xls
    2 
    3   HSSFSheet sheet = workBook.createSheet();//创建工作簿
    4 
    5   HSSFRow row1 = sheet.createRow(1);//创建一行
    6 
    7   HSSFCell cell0 = row1.createCell(0);//创建单元格
    8 
    9   cell0.setCellValue("对账单ID:");//给单元格赋值

    2.将创建的excel文档转换成需要输出的流:可以是文件流放在硬盘中,也可以是输出流输出到浏览器供下载。  ◆  文件流:FileOutputStream

    1         FileOutputStream fos = new FileOutputStream("F://workbook.xls");
    2         workBook.write(fos);
    3         fos.close();

      ◆  输出流 :response.getOutputStream()

    1       response.reset();
    2         response.setContentType("application/vnd.ms-excel;charset=gbk");
    3         response.setHeader("Content-Disposition", "attachment;filename=account.xls");
    4         OutputStream out = response.getOutputStream();
    5         workBook.write(out);
    6         out.close();  

      ◆ tip:

        *response.reset();清除首部的空白行
             * getResponse的getWriter()方法连续两次输出流到页面的时候,第二次的流会包括第一次的流,
             * 所以可以使用response.reset或者resetBuffer的方法。
             * resetBuffer方法与reset方法的区别是,头和状态码没有清除。

             如果发现这样设置后浏览器端并没有弹出【文件另存为】选择路径窗口,请检查下前面代码是否出现:

      1.response.setContentType("text/html;charset=UTF-8");//设置编码格式
          2.PrintWriter out = response.getWriter();导致无法确定输出流

    3、excel文件名为中文时乱码或者出现未知文件类型错误时,考虑用URLEncoder对文件名进行转码

       

      

    1         String name = java.net.URLEncoder.encode(fileName, "utf-8");
    2         response.setContentType("application/vnd.ms-excel;charset=utf-8");
    3         response.setHeader("Content-Disposition", "attachment;filename="+name.toString()+".xls"); 
    4         OutputStream out = response.getOutputStream();
    5         workBook.write(out);
    6         out.close();     

      


           

  • 相关阅读:
    SpringBoot系列之缓存使用教程
    Dubbo系列之常用配置用法简介
    SpringBoot系列之集成Dubbo的方式
    JavaScript系列之回调函数callback
    JavaScript系列之事件冒泡机制简介
    Oracle基础之保留字和关键字
    Oracle调优之no_unnest和unnest用法简介
    InnoSetup 以命令行自动编译打包
    InnoSetup 脚本打包及管理员权限设置
    C# 获取系统当前IE版本号
  • 原文地址:https://www.cnblogs.com/zhutouying/p/3192813.html
Copyright © 2020-2023  润新知