博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
将数据导出Excel格式
阅读量:6196 次
发布时间:2019-06-21

本文共 2119 字,大约阅读时间需要 7 分钟。

最近做的一个项目涉及到导出功能,第一次写做下笔记,此方法用的是poi插件:

1.下载poi-3.6-20091214.jar加载到工程中

2.如果在后台写代码,一个小例子,代码如下:

package com.test;import java.io.*;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFCell;public class WriteExcel { public   void   getExcel(String   sheetName,OutputStream   output)  {  HSSFWorkbook wb=new HSSFWorkbook();  HSSFSheet sheet1=wb.createSheet("sheet1");  HSSFRow row=sheet1.createRow((short)0);  HSSFCell cell=row.createCell((short)0);  cell.setCellValue(1);    row.createCell((short)1).setCellValue(2);  row.createCell((short)2).setCellValue(3);  row.createCell((short)3).setCellValue("中文字符");      row=sheet1.createRow((short)1);  cell=row.createCell((short)0);  cell.setCellValue(1);    row.createCell((short)1).setCellValue(2);  row.createCell((short)2).setCellValue(3);  row.createCell((short)3).setCellValue("中文字符");      try   {          output.flush();          wb.write(output);          output.close(); }   catch   (IOException   e)   {          e.printStackTrace();          System.out.println( "Output   is   closed ");  }  }}

3.由于要让数据有提示的打开或者保存,我们可以加一个jsp页面,然后访问这个页面直接弹出Excel打开框:

jsp页面:

<%@ page contentType="application/vnd.ms-excel" language="java" import="java.io.OutputStream,java.util.*,com.test.WriteExcel" pageEncoding="GBK"%><%response.setHeader("Content-Disposition","attachment;filename=test123.xls");//指定下载的文件名response.setContentType("application/vnd.ms-excel"); WriteExcel  we=new WriteExcel();we.getExcel("111.xls",response.getOutputStream());OutputStream ot=response.getOutputStream();out.clear();out = pageContext.pushBody();%>

一定要注意jsp代码里的最后三行:

OutputStream ot=response.getOutputStream();//这一步是要导入java.io.OutputStream

out.clear();
out = pageContext.pushBody();

丢了这三行在运行程序的时候后台会报错:

“严重: Servlet.service() for servlet jsp threw exception

java.lang.IllegalStateException: getOutputStream() has already been called for this response”

还有就是无论代码是在jsp页面写还是在后台写,这样在jsp页面里加上上面的三行代码就不会在后台报错了。

 

 

转载于:https://www.cnblogs.com/zhangkaijia/archive/2013/04/16/3024665.html

你可能感兴趣的文章
[Dart] Understand Variables and Constants in Dart
查看>>
Javascript根据GPS两点经纬度信息计算距离
查看>>
推荐30个用于微服务的顶级工具
查看>>
JavaMail 接收邮件及删除
查看>>
c++默认参数函数注意事项
查看>>
【Linux】linux/unix下telnet提示Escape character is '^]'的意义
查看>>
漏洞安全
查看>>
异步任务spring @Async注解源码解析
查看>>
人工智能与未来工作
查看>>
css文字效果(文字剪贴蒙版,text-shodow的应用,文字排版等…)
查看>>
MySQL伪master+Binlog+同步【转】
查看>>
模仿以太坊 ERC20 规范的 Hyperledger Fabric 实现 Token 通证
查看>>
Asp.Net Core 如何在 IIS 中设置环境变量
查看>>
IntelliJ IDEA推荐插件
查看>>
RandomStringUtils RandomUtils
查看>>
Notification 浏览器的消息推送
查看>>
[转载]你所不了解的DevOps
查看>>
关于双十二崩盘的一些思考
查看>>
centos7 开启端口防火墙配置(如开启3306或者80端口)
查看>>
async/await使用深入详解
查看>>