一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - POI通過模板導出EXCEL文件的實例

POI通過模板導出EXCEL文件的實例

2020-12-16 11:39liufei-kuaile Java教程

下面小編就為大家帶來一篇POI通過模板導出EXCEL文件的實例。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一般的EXCEL導出使用POI先創建一個HSSFWorkbook,然后通過不斷創建HSSFRow,HSSFCell后設置單元格內容便可以完成導出。

這次在項目中需要用到模板,導出的內容包括(1.模板中的內容、樣式。2.自己需要新增的內容、樣式。),還需要設置單元格的樣式,在網上搜了一些blog,完成后記錄一下。

分析這次需求,最關鍵的就是如何獲取到填充了模板的新HSSFWorkbook,如果獲取到它,我們可以熟練的往里面添加內容。

?
1
2
3
File fi = new File("F:/usr/user.xls");
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(fi));
HSSFWorkbook wb = new HSSFWorkbook(fs);

這樣便可以獲取到我們熟悉的HSSFWorkbook對象了,操作熟悉的HSSFWorkbook對象想必爽歪歪了。這里還有一個需求,就是需要設置一些單元格的樣式,這在之前我也沒有接觸到過,記錄下來。

?
1
2
3
4
5
6
//生成單元格樣式
HSSFCellStyle cellStyle = wb.createCellStyle(); //wb是上一步創建的HSSFWorkbook對象
//設置背景顏色
cellStyle.setFillForegroundColor(HSSFColor.RED.index);
//solid 填充 foreground 前景色
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

這樣便創建完成了一個單元格的樣式,接下來便是在特定的單元格添加樣式。

?
1
2
3
4
//獲取特定的單元格
HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);
//設置樣式
cell.setCellStyle(cellStyle); //cellStyle是上一步創建的HSSFCellStyle對象 

 

如此,整個需求基本完成。對于整個過程中需要用到的其他方法,這里寫了一個封裝類。

**  有些方法可能只適用此項目,使用時需要修改。

?
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
package com.pole.educate.excel;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
 
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;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.RichTextString;
/**
 * 共分為六部完成根據模板導出excel操作:<br/>
 * 第一步、設置excel模板路徑(setSrcPath)<br/>
 * 第二步、設置要生成excel文件路徑(setDesPath)<br/>
 * 第三步、設置模板中哪個Sheet列(setSheetName)<br/>
 * 第四步、獲取所讀取excel模板的對象(getSheet)<br/>
 * 第五步、設置數據(分為6種類型數據:setCellStrValue、setCellDateValue、setCellDoubleValue、setCellBoolValue、setCellCalendarValue、setCellRichTextStrValue)<br/>
 * 第六步、完成導出 (exportToNewFile)<br/>
 *
 * @author Administrator
 *
 */
public class ExcelWriter {
  POIFSFileSystem fs = null;
  HSSFWorkbook wb = null;
  HSSFSheet sheet = null;
  HSSFCellStyle cellStyle = null;
  
  private String srcXlsPath = "";// excel模板路徑
  private String desXlsPath = ""; // 生成路徑
  private String sheetName = "";
 
  /**
   * 第一步、設置excel模板路徑
   * @param srcXlsPaths
   */
  public void setSrcPath(String srcXlsPaths) {
    this.srcXlsPath = srcXlsPaths;
  }
 
  /**
   * 第二步、設置要生成excel文件路徑
   * @param desXlsPaths
   * @throws FileNotFoundException
   */
  public void setDesPath(String desXlsPaths) throws FileNotFoundException {
    this.desXlsPath = desXlsPaths;
  }
 
  /**
   * 第三步、設置模板中哪個Sheet列
   * @param sheetName
   */
  public void setSheetName(String sheetName) {
    this.sheetName = sheetName;
  }
 
  /**
   * 第四步、獲取所讀取excel模板的對象
   */
  public void getSheet() {
    try {
      File fi = new File(srcXlsPath);
      if(!fi.exists()){
        //System.out.println("模板文件:"+srcXlsPath+"不存在!");
        return;
      }
      fs = new POIFSFileSystem(new FileInputStream(fi));
      wb = new HSSFWorkbook(fs);
      sheet = wb.getSheet(sheetName);
      
      //生成單元格樣式
      cellStyle = wb.createCellStyle();
      //設置背景顏色
      cellStyle.setFillForegroundColor(HSSFColor.RED.index);
      //solid 填充 foreground 前景色
      cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
      
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  /**
   *
   */
  public HSSFRow createRow(int rowIndex) {
    HSSFRow row = sheet.createRow(rowIndex);
    return row;
  }
  /**
   *
   */
  public void createCell(HSSFRow row,int colIndex) {
    row.createCell(colIndex);
  }
  /**
   * 第五步、設置單元格的樣式
   * @param rowIndex  行值
   * @param cellnum  列值
   */
  public void setCellStyle(int rowIndex, int cellnum) {
    HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);
    cell.setCellStyle(cellStyle);
  }
  
  /**
   * 第五步、設置字符串類型的數據
   * @param rowIndex  行值
   * @param cellnum  列值
   * @param value    字符串類型的數據
   */
  public void setCellStrValue(int rowIndex, int cellnum, String value) {
    if(value != null) {
      HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);
      cell.setCellValue(value);
    }
  }
 
  /**
   * 第五步、設置日期/時間類型的數據
   * @param rowIndex  行值
   * @param cellnum  列值
   * @param value    日期/時間類型的數據
   */
  public void setCellDateValue(int rowIndex, int cellnum, Date value) {
    HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);
    cell.setCellValue(value);
  }
 
  /**
   * 第五步、設置浮點類型的數據
   * @param rowIndex  行值
   * @param cellnum  列值
   * @param value    浮點類型的數據
   */
  public void setCellDoubleValue(int rowIndex, int cellnum, double value) {
    HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);
    cell.setCellValue(value);
  }
 
  /**
   * 第五步、設置Bool類型的數據
   * @param rowIndex  行值
   * @param cellnum  列值
   * @param value    Bool類型的數據
   */
  public void setCellBoolValue(int rowIndex, int cellnum, boolean value) {
    HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);
    cell.setCellValue(value);
  }
 
  /**
   * 第五步、設置日歷類型的數據
   * @param rowIndex  行值
   * @param cellnum  列值
   * @param value    日歷類型的數據
   */
  public void setCellCalendarValue(int rowIndex, int cellnum, Calendar value) {
    HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);
    cell.setCellValue(value);
  }
 
  /**
   * 第五步、設置富文本字符串類型的數據。可以為同一個單元格內的字符串的不同部分設置不同的字體、顏色、下劃線
   * @param rowIndex  行值
   * @param cellnum  列值
   * @param value    富文本字符串類型的數據
   */
  public void setCellRichTextStrValue(int rowIndex, int cellnum,
      RichTextString value) {
    HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);
    cell.setCellValue(value);
  }
  
  /**
   * 第六步、完成導出
   */
  public void exportToNewFile() {
    FileOutputStream out;
    try {
      out = new FileOutputStream(desXlsPath);
      wb.write(out);
      out.close();
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
 
}

以上這篇POI通過模板導出EXCEL文件的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/liufei-kuaile/p/7359609.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 女人把私密部位张开让男人桶 | 午夜亚洲精品久久久久久 | 欧美黑人性猛交╳xx╳动态图 | 艾秋麻豆果冻剧传媒在线播放 | 欧美一区二区三区综合色视频 | 日韩欧一级毛片在线播无遮挡 | ts视频在线观看 | 交换朋友夫妇3中文字幕 | 男男浴室吸乳play | 青青久久精品国产 | 911亚洲精品国内自产 | 国产精品国产精品国产三级普 | 四虎免费看片 | 吻戏辣妞范1000免费体验 | 久久精品视频uu | 亚洲欧美国产在线 | 俄罗斯处女 | 校服下的白嫩小乳尖h1v1 | 91av爱爱| 夫妻性生活影院 | 日本天堂视频 | 高清一区高清二区视频 | 2021国产精品视频一区 | 国产精品香蕉在线观看不卡 | 国产一区二区在线观看视频 | 97色资源| 精品国产福利片在线观看 | 欧美色成人tv在线播放 | 亚洲激情一区 | 我把校花黑色蕾丝胸罩脱了 | 男男同志gaysxxx | 教室眠催白丝美女校花 | 我的漂亮朋友在线观看全集免费 | 扒开大腿狠狠挺进视频 | 深夜福利在线播放 | 国产亚洲精品美女2020久久 | 娇妻与公陈峰姚瑶最新版 | 99精品国产成人一区二区在线 | 国产精品久久免费观看 | 久久性综合亚洲精品电影网 | 天天色踪合合 |