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

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

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

服務器之家 - 編程語言 - Java教程 - Java通過apache poi生成excel實例代碼

Java通過apache poi生成excel實例代碼

2020-11-06 20:59paulWen Java教程

本篇文章主要介紹了Java通過apache poi生成excel實例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

首先,jar

maven 添加依賴

?
1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
 <groupId>org.apache.poi</groupId>
 <artifactId>poi-ooxml</artifactId>
 <version>3.15</version>
</dependency>

開始以為是poi,然后就直接加poi的依賴,誰知道并沒有所需要的類。查了查才發現是poi-ooxml

要用到的類

  1. XSSFWorkbook , 代表一個excel文檔
  2. XSSFSheet , 代表文檔中的一個sheet
  3. XSSFRow , 代表sheet中的一行
  4. XSSFCell , 代表row中的每一項的值

最最基本的使用

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//創建excel文檔
XSSFWorkbook workbook = new XSSFWorkbook();
//創建sheet
XSSFSheet sheet = workbook.createSheet("sheetName");
 
int rownum=0;
//創建首行
XSSFRow firstrow = sheet.createRow(rownum++);
int cellnum = 0;
//把保存在titles中的各個列名,分別在row中創建cell
for(String key : titles){
 XSSFCell cell = firstrow.createCell(cellnum++);
 cell.setCellValue(key);
}
 
 
//下面可以繼續創建行
 
//把excel寫到要寫的outputStream中
workbook.write(output);
//最后關閉
workbook.close();

小例子一枚

利用反射,把bean類中各屬性(用getXxx取出),寫入到excel中

ExcelUtil.java

?
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 me.paul.excelDemo;
 
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 
 
public class ExcelUtil {
 
 public <T> void getExcel(List<T> list,Class<T> c,OutputStream output) throws IOException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
 Map<String,Method> methodMap = new LinkedHashMap<>();
 Method[] methods = c.getDeclaredMethods();
 for(int i=0;i<methods.length;i++){
  Method method = methods[i];
  String name = method.getName();
  Pattern pattern = Pattern.compile("get(.*)");
  Matcher matcher = null;
  if((matcher = pattern.matcher(name)).matches()){
  name = matcher.group(1);
  char ch = name.charAt(0);
  char newch = (char) (ch + 32);
  name = name.replace(ch,newch);
  methodMap.put(name, method);
  }
 }
 
 XSSFWorkbook workbook = new XSSFWorkbook();
 XSSFSheet sheet = workbook.createSheet(c.getCanonicalName());
 int rownum=0;
 XSSFRow firstrow = sheet.createRow(rownum++);
 int cellnum = 0;
 for(String key : methodMap.keySet()){
  XSSFCell cell = firstrow.createCell(cellnum++);
  cell.setCellValue(key);
 }
 
 for(T t : list){
  XSSFRow row = sheet.createRow(rownum++);
  cellnum = 0;
  for(String key:methodMap.keySet()){
  Method method = methodMap.get(key);
                //設置可訪問,之前不知道這方法,所以關于反射那篇文章有錯誤,見諒見諒
                method.setAccessible(true);
  Object obj = method.invoke(t);
  XSSFCell cell = row.createCell(cellnum++);
  cell.setCellValue(obj== null ? "":obj.toString());
  }
  
 }
 workbook.write(output);
 workbook.close();
 }
}

App.java 進行測試使用

?
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
package me.paul.excelDemo;
 
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
 
public class App {
 public static void main(String[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, IOException {
 List<User> list = new ArrayList<>();
 User u = new User();
 u.setId(1);
 u.setName("Paul");
 u.setAge(18);
 list.add(u);
 u = new User();
 u.setId(2);
 u.setName("Johnson");
 u.setAge(20);
 list.add(u);
 u = new User();
 u.setId(3);
 u.setName("David");
 u.setAge(22);
 list.add(u);
 OutputStream output = new FileOutputStream("/home/paul/user.xlsx");
 new ExcelUtil().getExcel(list, User.class,output);
 output.close();
 }
}

測試結果截圖

Java通過apache poi生成excel實例代碼

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.wenjingyi.top/passage/get/39?utm_source=tuicool&utm_medium=referral

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91大神在线观看精品一区 | 精品视频入口 | 亚洲国产在线午夜视频无 | 2021久久 | 波多野结衣两女调教 | 日韩成人在线视频 | 18捆绑调教在线高清 | 猛h辣h高h文湿校园1v1 | 欧美理论片手机在线观看片免费 | 热门小说同人h改编h | 青青草原免费在线视频 | 天堂中文在线观看 | 欧美性bbbbbxxxxxxx| 亚洲精品老司机福利在线播放 | 欧美综合一区二区三区 | 车上小婕子系列辣文小说 | 午夜无码片在线观看影院 | 香蕉国产成版人视频在线观看 | 精品一久久香蕉国产二月 | 亚洲精品久久久打桩机 | 男老头澡堂gay老头456 | 日本孕妇与黑人xxxxxx | 嘉嘉的丝袜美腿白丝 | 俺去啦最新地址 | 草草视频人人爽 | 欧美性理论片在线观看片免费 | 高h视频免费观看 | 四虎在线成人免费网站 | 国产卡一卡二卡三乱码手机 | 日韩高清一区 | 免费免费啪视频在线观播放 | 日本三不卡| 国产精品国语自产拍在线观看 | 好爽好粗| 亚洲 综合 欧美在线 热 | 美女的让男人桶爽网站 | 久久爽狠狠添AV激情五月 | 百合女女师生play黄肉黄 | 国产自拍啪啪 | 俄罗斯美女破苞 | 日本草草视频 |