poi操作excel(下载excel)

来源:互联网 发布:数据分析r语言实战 编辑:程序博客网 时间:2024/05/18 02:06

<一>:用jdk自带的输入输出流

1://可以先设置response编码,使响应给浏览器的东西不是乱码;

response.setCharacterEncoding(" UTF-8");

2://得到要下载的东西存放的地址,也就是绝对路径;自己可以设置request来拼路径(xlsx是excel表文件的后缀格式),(filepath是要下载excel文件的相对路劲,也就是文件名比如下载leavestu.xlsx则filepath=leavestu)

(自家的jar包下的方法,在core-api下)

String filename=CoreplusEnv.getRealPath(''/_upload/ ''+filepath+".xlsx");

3://以当前的绝对路径创建一个file对象;(文件在磁盘里,而程序要用他,就得创建个该路径的实例,也就是一个关联通道才能操作它,当然还有其他方法可用来创建)(自来水开水的思想)

File file=new File(filename);

4://创建一个文件输入流(字节输入流)(此处也是一样起一个关联通道的作用,而他的read方法可以去读下载excel文件中的内容)

FileInputStream is = new FileInputStream(file);

5://用poi技术也就是相关价包来提供创建此字节流的工作簿对象(此处用xssf)

首先,POI提供了HSSF、XSSF以及SXSSF三种方式操作Excel。他们的区别如下:

HSSF:是操作Excel97-2003版本,扩展名为.xls。

XSSF:是操作Excel2007版本开始,扩展名为.xlsx。

SXSSF:是在XSSF基础上,POI3.8版本开始提供的一种支持低内存占用的操作方式,扩展名为.xlsx。

1、支持的行数、列数

Excel97-2003版本,一个sheet最大行数65536,最大列数256。

Excel2007版本开始,一个sheet最大行数1048576,最大列数16384。

2、文件大小

.xlsx文件比.xls的压缩率高,也就是相同数据量下,.xlsx的文件会小很多。

3、兼容性

Excel97-2003版本是不能打开.xlsx文件的。

Excel2007开始的版本是可以打开.xls文件的。

 当然海量数据的导出肯定是推荐SXSSF的方式

Workbook    wk=new  XSSFWorkbook(is);

6:设置响应请求的样式

response.setContentType("application/vnd.ms-excel");

//设置表头


设置response的头报文数据,content-disposition为浏览器另存为.attachment以附件形式下载,filename下载后的文件名  new String(str.getBytes("gb2312"),"iso8859-1")文件名从iso8859-1编码转换为gb2312编码.
eg:
response.setHeader("Content-disposition","attachment;filename="+new String(str.getBytes("gb2312"),"iso8859-1"));

response.setHeader("Content-disposition", "attachment;filename="  
               + file.getName())

7:得到此输入流的输出流,response是响应客户端的对象,在服务器里,而他有一个得到输出流方法,来创建一个给客户端要输出的内容流;

OutputStream  os=response.getOutputStream();

8:用工作簿的write方法输出在工作簿里

 wk.write(os);

9:关闭输出流

os.close();




      

原创粉丝点击