简单介绍一下java中的excel文件导出功能(基于httpservletresponse实现下载)
首先,引入需要依赖的jar包:
1
2
3
4
5
6
7
8
9
10
|
<dependency> <groupid>org.apache.poi</groupid> <artifactid>poi</artifactid> <version> 3.14 </version> </dependency> <dependency> <groupid>org.apache.poi</groupid> <artifactid>poi-ooxml</artifactid> <version> 3.14 </version> </dependency> |
编写一个工具类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
package exceloutput; import org.apache.commons.lang3.stringutils; import org.apache.poi.ss.usermodel.cell; import org.apache.poi.ss.usermodel.row; import org.apache.poi.ss.usermodel.workbook; import org.apache.poi.xssf.streaming.sxssfsheet; import org.apache.poi.xssf.streaming.sxssfworkbook; import javax.servlet.http.httpservletresponse; import java.io.ioexception; import java.io.unsupportedencodingexception; import java.util.list; import java.util.uuid; /** * @author haozz * @date 2018/6/6 9:57 * @description excel导出抽象工具类 **/ public abstract class exportabstractutil { public void write(httpservletresponse response, workbook workbook){ string filename = uuid.randomuuid().tostring()+ ".xls" ; pwrite(response,workbook,filename); } public void write(httpservletresponse response,workbook workbook,string filename){ if (stringutils.isempty(filename)){ filename = uuid.randomuuid().tostring()+ ".xls" ; } pwrite(response,workbook,filename); } public void write(httpservletresponse response, list<list<string>> lists,string filename){ if (stringutils.isempty(filename)){ filename = uuid.randomuuid().tostring()+ ".xls" ; } sxssfworkbook workbook = new sxssfworkbook(lists.size()); sxssfsheet sheet = workbook.createsheet(filename.substring( 0 ,filename.indexof( ".xls" ))); integer rowindex = 0 ; row row = null ; cell cell = null ; for (list<string> rowdata: lists ){ integer columnindex = 0 ; row = sheet.createrow(rowindex++); for (string columnval:rowdata){ cell = row.createcell(columnindex++); cell.setcellvalue(columnval); } } pwrite(response,workbook,filename); } private void pwrite(httpservletresponse response,workbook workbook,string filename){ response.setcharacterencoding( "utf-8" ); response.setcontenttype( "application/vnd.ms-excel;charset=utf-8" ); try { response.addheader( "content-disposition" , "attachment; filename=" + new string(filename.getbytes( "utf-8" ), "iso8859-1" )); } catch (unsupportedencodingexception e) { e.printstacktrace(); filename= uuid.randomuuid().tostring()+ ".xls" ; response.addheader( "content-disposition" , "attachment; filename=" +filename); } try { workbook.write(response.getoutputstream()); } catch (ioexception e) { e.printstacktrace(); } } } |
有了这个工具类就可以实现excel导出了,代码不难,这里就不多解释了。
在springboot项目中编写一个导出excel的controller,并继承上面的exportabstractutil,给出一个接口用作测试:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
package com.csdn.myboot.controller; import com.csdn.myboot.utils.exportabstractutil; import org.springframework.stereotype.controller; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.responsebody; import javax.servlet.http.httpservletresponse; import java.util.arraylist; import java.util.arrays; import java.util.list; /** * @author haozz * @date 2018/6/6 10:14 * @description **/ @controller @requestmapping (value = "/index" ) public class helloctrl extends exportabstractutil{ @requestmapping (value = "/testexceloutput" ) @responsebody public void testexceloutput(httpservletresponse response){ //拼接数据start list<list<string>> lists = new arraylist<list<string>>(); string rows[] = { "year" , "month" , "day" }; list<string> rowstitle = arrays.aslist(rows); lists.add(rowstitle); for ( int i = 0 ; i<= 9 ;i++){ string [] rowss = { "1" , "2" , "3" }; list<string> rowsslist = arrays.aslist(rowss); lists.add(rowsslist); } //拼接数据end write(response,lists, "导出excel.xls" ); } } |
浏览器输入链接:
http://localhost:8099/index/testexceloutput
即可自动下载测试数据组成的excel:
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。如果你想了解更多相关内容请查看下面相关链接
原文链接:https://blog.csdn.net/hz_940611/article/details/80590488