最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java通過apache poi生成excel實(shí)例代碼

 更新時(shí)間:2017年06月03日 16:22:55   作者:paulWen  
本篇文章主要介紹了Java通過apache poi生成excel實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

首先,jar

maven 添加依賴

<!-- 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的依賴,誰知道并沒有所需要的類。查了查才發(fā)現(xiàn)是poi-ooxml

要用到的類

  1. XSSFWorkbook , 代表一個(gè)excel文檔
  2. XSSFSheet , 代表文檔中的一個(gè)sheet
  3. XSSFRow , 代表sheet中的一行
  4. XSSFCell , 代表row中的每一項(xiàng)的值

最最基本的使用

//創(chuàng)建excel文檔
XSSFWorkbook workbook = new XSSFWorkbook();
//創(chuàng)建sheet
XSSFSheet sheet = workbook.createSheet("sheetName");

int rownum=0;
//創(chuàng)建首行
XSSFRow firstrow = sheet.createRow(rownum++);
int cellnum = 0;
//把保存在titles中的各個(gè)列名,分別在row中創(chuàng)建cell
for(String key : titles){
 XSSFCell cell = firstrow.createCell(cellnum++);
 cell.setCellValue(key);
}


//下面可以繼續(xù)創(chuàng)建行

//把excel寫到要寫的outputStream中
workbook.write(output);
//最后關(guān)閉
workbook.close();

小例子一枚

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

ExcelUtil.java

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);
                //設(shè)置可訪問,之前不知道這方法,所以關(guān)于反射那篇文章有錯(cuò)誤,見諒見諒
                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 進(jìn)行測試使用

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();
 }
}

測試結(jié)果截圖

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SparkSQL開窗函數(shù)分析使用示例

    SparkSQL開窗函數(shù)分析使用示例

    開窗函數(shù)的引入是為了既顯示聚集前的數(shù)據(jù),又顯示聚集后的數(shù)據(jù)。即在每一行的最后一列添加聚合函數(shù)的結(jié)果。開窗用于為行定義一個(gè)窗口,它對一組值進(jìn)行操作,不需要使用 GROUP BY 子句對數(shù)據(jù)進(jìn)行分組,能夠在同一行中同時(shí)返回基礎(chǔ)行的列和聚合列
    2023-01-01
  • 詳解Maven環(huán)境的搭建與idea配置

    詳解Maven環(huán)境的搭建與idea配置

    本篇文章主要介紹了詳解Maven環(huán)境的搭建與idea配置,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • 一篇文章帶你深入了解Java對象與Java類

    一篇文章帶你深入了解Java對象與Java類

    這篇文章主要給大家介紹了關(guān)于java中類和對象的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • 詳解java中的Collections類

    詳解java中的Collections類

    這篇文章主要為大家詳細(xì)介紹了java中的Collections類,感興趣的小伙伴們可以參考一下
    2016-07-07
  • IntelliJ IDEA 中g(shù)it的使用圖文教程

    IntelliJ IDEA 中g(shù)it的使用圖文教程

    本文通過圖文并茂的形式給大家介紹了IntelliJ IDEA 中g(shù)it的使用,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2018-02-02
  • Java中常見的文件拷貝方式小結(jié)

    Java中常見的文件拷貝方式小結(jié)

    這篇文章主要為大家詳細(xì)介紹了JAVA?四種拷貝文件的方式,分析一下他們對內(nèi)存使用的方式和各自應(yīng)用的場景,其實(shí)也是對之前學(xué)過的知識(shí)做一個(gè)回顧吧,快跟隨小編一起學(xué)習(xí)起來吧
    2024-03-03
  • Docker 解決openjdk容器里無法使用JDK的jmap等命令問題

    Docker 解決openjdk容器里無法使用JDK的jmap等命令問題

    這篇文章主要介紹了Docker 解決openjdk容器里無法使用JDK的jmap等命令問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Struts 2 配置Action詳解

    Struts 2 配置Action詳解

    本篇文章主要介紹了Struts 2 配置Action詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • SpringBoot+slf4j線程池全鏈路調(diào)用日志跟蹤問題及解決思路(二)

    SpringBoot+slf4j線程池全鏈路調(diào)用日志跟蹤問題及解決思路(二)

    本文主要給大家介紹如何實(shí)現(xiàn)子線程中的traceId日志跟蹤,本文通過封裝Callable為例給大家介紹的非常詳細(xì),需要的朋友一起看看吧
    2021-05-05
  • Java提示缺少返回語句的解決辦法

    Java提示缺少返回語句的解決辦法

    在本篇文章里小編給大家分享了關(guān)于Java提示缺少返回語句的解決辦法以及相關(guān)知識(shí)點(diǎn),需要的朋友們參考下。
    2019-07-07

最新評論

布尔津县| 太原市| 偏关县| 珲春市| 北海市| 江川县| 建水县| 昌都县| 报价| 克山县| 长泰县| 商河县| 新宁县| 五家渠市| 麻城市| 邮箱| 克拉玛依市| 钟山县| 萍乡市| 南城县| 安图县| 乌鲁木齐市| 伊吾县| 香河县| 腾冲县| 永州市| 西畴县| 七台河市| 广饶县| 乌兰浩特市| 昌图县| 文安县| 安丘市| 根河市| 辰溪县| 蛟河市| 清徐县| 咸丰县| 蒙城县| 丽江市| 神池县|