Apache POI 建立 Excel

快乐的总统95發表於2024-10-02

資料來自 通義千問🎈

依賴包

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.2</version>
</dependency>

v5.2.2。

建立Excel

xlsx 格式。

簡單版

建立一個包含資料的 Excel 檔案

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;

public class ExcelWriter {
    public static void main(String[] args) {
        try (Workbook workbook = new XSSFWorkbook(); // 建立一個新的 xlsx 工作簿
             FileOutputStream fileOut = new FileOutputStream("output.xlsx")) { // 建立一個輸出流

            // 建立一個工作表
            Sheet sheet = workbook.createSheet("Sheet1");

            // 建立一行
            Row row = sheet.createRow(0);

            // 建立單元格並填充資料
            Cell cell = row.createCell(0);
            cell.setCellValue("Hello World!");

            cell = row.createCell(1);
            cell.setCellValue(new Date());

            // 寫入檔案
            workbook.write(fileOut);

            System.out.println("Excel file created successfully.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

進階版

建立更復雜的 Excel 檔案

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;

public class ExcelComplexWriter {
    public static void main(String[] args) {
        try (Workbook workbook = new XSSFWorkbook(); // 建立一個新的 xlsx 工作簿
             FileOutputStream fileOut = new FileOutputStream("output_complex.xlsx")) { // 建立一個輸出流

            // 建立一個工作表
            Sheet sheet = workbook.createSheet("Sheet1");

            // 建立一行
            Row row = sheet.createRow(0);

            // 建立單元格並填充資料
            Cell cell = row.createCell(0);
            cell.setCellValue("Name");
            cell = row.createCell(1);
            cell.setCellValue("Age");

            // 建立第二個行
            row = sheet.createRow(1);

            cell = row.createCell(0);
            cell.setCellValue("John Doe");

            cell = row.createCell(1);
            cell.setCellValue(30);

            // 設定樣式
            CellStyle style = workbook.createCellStyle();
            style.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
            style.setFillPattern(FillPatternType.SOLID_FOREGROUND);

            // 應用樣式
            cell = row.createCell(2);
            cell.setCellValue("New York");
            cell.setCellStyle(style);

            // 寫入檔案
            workbook.write(fileOut);

            System.out.println("Excel file created successfully.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

一些Excel的設定

列寬、單元格自動換行。

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;

public class ExcelWriterWithWidthAndWrap {
    public static void main(String[] args) {
        try (Workbook workbook = new XSSFWorkbook(); // 建立一個新的 xlsx 工作簿
             FileOutputStream fileOut = new FileOutputStream("output_with_width_and_wrap.xlsx")) { // 建立一個輸出流

            // 建立一個工作表
            Sheet sheet = workbook.createSheet("Sheet1");

            // 設定列寬
            sheet.setColumnWidth(0, 20 * 256); // 設定第一列的寬度為 20 個字元
            sheet.setColumnWidth(1, 40 * 256); // 設定第二列的寬度為 40 個字元

            // 建立一行
            Row row = sheet.createRow(0);

            // 建立單元格並填充資料
            Cell cell = row.createCell(0);
            cell.setCellValue("Hello World!");

            cell = row.createCell(1);
            cell.setCellValue("This is a very long sentence that needs to be wrapped automatically.");

            // 設定樣式
            CellStyle style = workbook.createCellStyle();
            style.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
            style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
            style.setWrapText(true); // 設定自動換行

            // 應用樣式
            cell.setCellStyle(style);

            // 寫入檔案
            workbook.write(fileOut);

            System.out.println("Excel file created successfully.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Apache POI 官網

https://poi.apache.org/apidocs/index.html

Apache POI 建立 Excel

Apache POI 建立 Excel

5.0.x 的文件:

https://poi.apache.org/apidocs/5.0/

---END---

本文連結:

https://www.cnblogs.com/luo630/p/18387024

ben釋出於部落格園

ben釋出於部落格園

相關文章