1. 程式人生 > >Java匯出excel檔案簡單實現

Java匯出excel檔案簡單實現

慣例: 引用度孃的介紹

Apache POI [1] 是用Java編寫的免費開源的跨平臺的 Java API,Apache POI提供API給Java程式對Microsoft Office格式檔案讀和寫的功能。POI為“Poor Obfuscation Implementation”的首字母縮寫,意為“可憐的模糊實現”。

1、匯入maven

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>

2、工具方法

/**
 * @param sheetName 表名
 * @param header 表頭資料
 * @param body 主幹資料 body.get(i) 對應 i+1行的所有資料
 */
public static void generateExcel(String sheetName, List<String> header, List<List<String>> body, OutputStream out) {
    //新建excel報表
    HSSFWorkbook excel = new HSSFWorkbook();
    //新增一個sheet
HSSFSheet hssfSheet = excel.createSheet(sheetName); //往excel表格建立一行,excel的行號是從0開始的 // 設定表頭 HSSFRow firstRow = hssfSheet.createRow(0); for (int columnNum = 0; columnNum < header.size(); columnNum ++) { //建立單元格 HSSFCell hssfCell = firstRow.createCell(columnNum); //設定單元格的值
hssfCell.setCellValue(header.size() < columnNum ? "-" : header.get(columnNum)); } // 設定主體資料 for (int rowNum = 0; rowNum < body.size(); rowNum ++) { //往excel表格建立一行,excel的行號是從0開始的 HSSFRow hssfRow = hssfSheet.createRow(rowNum + 1); List<String> data = body.get(rowNum); for (int columnNum = 0; columnNum < data.size(); columnNum ++) { //建立單元格 HSSFCell hssfCell = hssfRow.createCell(columnNum); //設定單元格的值 hssfCell.setCellValue(data.size() < columnNum ? "-" : data.get(columnNum)); } } try { excel.write(out); } catch (IOException e) { e.printStackTrace(); } }

3、程式碼測試

public static void main(String[] args) {
    List<String> header = new ArrayList<>(); // 第一行資料
    header.add("編號");
    header.add("姓名");
    header.add("性別");
    header.add("手機號");
    List<List<String>> body = new ArrayList<>();
    List<String> data1 = new ArrayList<>(); // 第二行資料
    data1.add("1001");
    data1.add("張三");
    data1.add("男");
    data1.add("12345678900");
    List<String> data2 = new ArrayList<>(); // 第三行資料
    data2.add("1002");
    data2.add("李四");
    data2.add("男");
    data2.add("12300000000");
    body.add(data1);
    body.add(data2);
    try (
        OutputStream out = new FileOutputStream("F:/test.xls") // 輸出目的地
    ) {
        POIUtil.generateExcel("sheetName", header, body, out);
    } catch (Exception e) {
        e.printStackTrace();
    }
}