使用Apache POI 處理Miscrosoft Office各種格式檔案

ashuai~發表於2024-07-17
  1. 介紹
    Apache POI 是一個處理Miscrosoft Office各種檔案格式的開源專案。簡單來說就是,我們可以使用 POI 在 Java 程式中對Miscrosoft Office各種檔案進行讀寫操作。一般情況下,POI 都是用於操作 Excel 檔案。
    image

  2. Apache POI 的應用場景:
    ● 銀行網銀系統匯出交易明細
    ● 各種業務系統匯出Excel報表
    ● 批次匯入業務資料

  3. 使用

  • Apache POI的maven座標:
<!-- poi -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
</dependency>
  • 讀、寫
/**
 * 使用POI操作Excel檔案
 */
public class POITest {

    /**
     * 透過POI建立Excel檔案並且寫入檔案內容
     */
    public static void write() throws Exception{
        //在記憶體中建立一個Excel檔案
        XSSFWorkbook excel = new XSSFWorkbook();
        //在Excel檔案中建立一個Sheet頁
        XSSFSheet sheet = excel.createSheet("info");
        //在Sheet中建立行物件,rownum編號從0開始
        XSSFRow row = sheet.createRow(1);
        //建立單元格並且寫入檔案內容
        row.createCell(1).setCellValue("姓名");
        row.createCell(2).setCellValue("城市");

        //建立一個新行
        row = sheet.createRow(2);
        row.createCell(1).setCellValue("張三");
        row.createCell(2).setCellValue("北京");

        row = sheet.createRow(3);
        row.createCell(1).setCellValue("李四");
        row.createCell(2).setCellValue("南京");

        //透過輸出流將記憶體中的Excel檔案寫入到磁碟
        FileOutputStream out = new FileOutputStream(new File("D:\\info.xlsx"));
        excel.write(out);

        //關閉資源
        out.close();
        excel.close();
    }


    /**
     * 透過POI讀取Excel檔案中的內容
     * @throws Exception
     */
    public static void read() throws Exception{
        InputStream in = new FileInputStream(new File("D:\\info.xlsx"));

        //讀取磁碟上已經存在的Excel檔案
        XSSFWorkbook excel = new XSSFWorkbook(in);
        //讀取Excel檔案中的第一個Sheet頁
        XSSFSheet sheet = excel.getSheetAt(0);

        //獲取Sheet中最後一行的行號
        int lastRowNum = sheet.getLastRowNum();

        for (int i = 1; i <= lastRowNum ; i++) {
            //獲得某一行
            XSSFRow row = sheet.getRow(i);
            //獲得單元格物件
            String cellValue1 = row.getCell(1).getStringCellValue();
            String cellValue2 = row.getCell(2).getStringCellValue();
            System.out.println(cellValue1 + " " + cellValue2);
        }

        //關閉資源
        in.close();
        excel.close();
    }

    public static void main(String[] args) throws Exception {
        //write();
        read();
    }
}

相關文章