小伙伴們,最近比較忙,沒(méi)什么時(shí)間寫,今天給大家分享的是java如何導(dǎo)出excel表格,因?yàn)樽罱凶鲞@樣一個(gè)功能,所以分享出來(lái),如有不對(duì)之處,敬請(qǐng)指正。
在許多企業(yè)辦公系統(tǒng)中,經(jīng)常會(huì)有用戶要求,需要對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)并且可以直接下載excel文件,這樣子的話,既然客戶提出了要求,我們就應(yīng)該去滿足吖,畢竟客戶是上帝嘛,那么我們?nèi)绾稳?shí)現(xiàn)呢?且看我為你一一道來(lái)。
poi簡(jiǎn)介:jakarta poi 是一套用于訪問(wèn)微軟格式文檔的java api。jakarta poi有很多組件組成,其中有用于操作excel格式文件的hssf和用于操作word的hwpf,在各種組件中目前只有用于操作excel的hssf相對(duì)成熟。
官方主頁(yè)http://poi.apache.org/index.html,
API文檔http://poi.apache.org/apidocs/index.html
現(xiàn)在用的比較多的都是用poi技術(shù)來(lái)導(dǎo)出或者導(dǎo)入excel,所以我們就用poi吧,用poi導(dǎo)出excel我們首先要下載所需的jar包然后導(dǎo)入到我們的項(xiàng)目中,用maven的同學(xué)只需找到相關(guān)
依賴加入到pom.xml里面即可。
1. 下載jar包:
官方下載:http://poi.apache.org/download.html這里可以下載到它的最新版本和文檔,目前最新版本是3.7,這里使用比較穩(wěn)定的3.6版。
百度網(wǎng)盤下載:https://pan.baidu.com/s/1mjhoawk 密碼:pkur
2. 將jar包加入到項(xiàng)目中:
將下載好的jar包加入到webinfo目錄下的lib文件夾中,eclipse用戶選中jar包然后右擊選擇build path選項(xiàng), idea用戶選中jar包然后右擊選擇add as library選項(xiàng)即可。
如果是用maven的可自行到maven中央倉(cāng)庫(kù)搜索poi然后選擇對(duì)應(yīng)的版本即可,也可以直接將下面代碼復(fù)制到pom.xml。
1
2
3
4
5
6
|
<!-- https: //mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <groupid>org.apache.poi</groupid> <artifactid>poi</artifactid> <version> 3.6 </version> </dependency> |
小提示:用maven引入依賴jar包的可能會(huì)遇到包引用不到的bug,但是maven依賴確實(shí)已經(jīng)引入了,而且沒(méi)有任何報(bào)錯(cuò),但是只要一引用 org.apache.poi.hssf.usermodel下面的類
就會(huì)報(bào)錯(cuò),報(bào)錯(cuò)內(nèi)容為:caused by: java.lang.noclassdeffounderror: org/apache/poi/hssf/usermodel/hssfworkbook。
3. jakarta poi hssf api組件:
hssf(用于操作excel的組件)提供給用戶使用的對(duì)象在rg.apache.poi.hssf.usermodel包中,主要部分包括excel對(duì)象,樣式和格式,有以下幾種常用的對(duì)象:
常用組件:
- hssfworkbook excel的文檔對(duì)象
- hssfsheet excel的表單
- hssfrow excel的行
- hssfcell excel的格子單元
- hssffont excel字體
樣式:
hssfcellstyle cell樣式
4.基本操作步驟:
首先,我們應(yīng)該要知道的是,一個(gè)excel文件對(duì)應(yīng)一個(gè)workbook,一個(gè)workbook中有多個(gè)sheet組成,一個(gè)sheet是由多個(gè)行(row)和列(cell)組成。那么我們用poi要導(dǎo)出一個(gè)excel表格
的正確順序應(yīng)該是:
1、用hssfworkbook打開或者創(chuàng)建“excel文件對(duì)象”
2、用hssfworkbook對(duì)象返回或者創(chuàng)建sheet對(duì)象
3、用sheet對(duì)象返回行對(duì)象,用行對(duì)象得到cell對(duì)象
4、對(duì)cell對(duì)象讀寫。
5、將生成的hssfworkbook放入httpservletresponse中響應(yīng)到前端頁(yè)面
5. 導(dǎo)出excel應(yīng)用實(shí)例:
工具類代碼:
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
|
package com.yq.util; import org.apache.poi.hssf.usermodel.hssfcell; import org.apache.poi.hssf.usermodel.hssfcellstyle; import org.apache.poi.hssf.usermodel.hssfrow; import org.apache.poi.hssf.usermodel.hssfsheet; import org.apache.poi.hssf.usermodel.hssfworkbook; public class excelutil { /** * 導(dǎo)出excel * @param sheetname sheet名稱 * @param title 標(biāo)題 * @param values 內(nèi)容 * @param wb hssfworkbook對(duì)象 * @return */ public static hssfworkbook gethssfworkbook(string sheetname,string []title,string [][]values, hssfworkbook wb){ // 第一步,創(chuàng)建一個(gè)hssfworkbook,對(duì)應(yīng)一個(gè)excel文件 if (wb == null ){ wb = new hssfworkbook(); } // 第二步,在workbook中添加一個(gè)sheet,對(duì)應(yīng)excel文件中的sheet hssfsheet sheet = wb.createsheet(sheetname); // 第三步,在sheet中添加表頭第0行,注意老版本poi對(duì)excel的行數(shù)列數(shù)有限制 hssfrow row = sheet.createrow( 0 ); // 第四步,創(chuàng)建單元格,并設(shè)置值表頭 設(shè)置表頭居中 hssfcellstyle style = wb.createcellstyle(); style.setalignment(hssfcellstyle.align_center); // 創(chuàng)建一個(gè)居中格式 //聲明列對(duì)象 hssfcell cell = null ; //創(chuàng)建標(biāo)題 for ( int i= 0 ;i<title.length;i++){ cell = row.createcell(i); cell.setcellvalue(title[i]); cell.setcellstyle(style); } //創(chuàng)建內(nèi)容 for ( int i= 0 ;i<values.length;i++){ row = sheet.createrow(i + 1 ); for ( int j= 0 ;j<values[i].length;j++){ //將內(nèi)容按順序賦給對(duì)應(yīng)的列對(duì)象 row.createcell(j).setcellvalue(values[i][j]); } } return wb; } } |
控制器代碼:
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
65
66
67
68
|
@controller @requestmapping (value = "/report" ) public class reportformcontroller extends basecontroller { @resource (name = "reportservice" ) private reportmanager reportservice; /** * 導(dǎo)出報(bào)表 * @return */ @requestmapping (value = "/export" ) @responsebody public void export(httpservletrequest request,httpservletresponse response) throws exception { //獲取數(shù)據(jù) list<pagedata> list = reportservice.booklist(page); //excel標(biāo)題 string[] java" id="highlighter_826597">
有興趣的朋友們跟著步驟操作下,感謝大家的閱讀和對(duì)服務(wù)器之家的支持。 原文鏈接:https://www.cnblogs.com/gudongcheng/p/8268909.html 延伸 · 閱讀
精彩推薦
|