首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 將 Oracle 資料匯出至 Excel 範本實作 (Apache POI)

     編輯:Java 綜合教學

Java 將 Oracle 資料匯出至 Excel 範本實作 (Apache POI)

實戰記錄:從 Oracle 表 TBYZB_FIELD_PRESSURE 讀取資料,套用現有 Excel 範本 (201512.xls),生成新檔案並保留原始格式,採用 SSH 架構與 Apache POI HSSF 實現。

一、前置準備

  • 資料來源: Oracle 表 TBYZB_FIELD_PRESSURE
  • 範本檔案: D:/201512.xls (含表頭、樣式、公式)
  • 輸出目標: E:/{yyyy}{mm}.xls (不修改原範本)

Oracle 表資料預覽 Excel 範本結構

二、核心實作邏輯

public void insertIntoExcel(String yyyy, String mm) throws Exception {
    // 1. 透過 DAO 取得資料 (SSH 架構)
    List result = tyFieldPressDao.search(yyyy, mm);

    // 2. 讀取範本工作簿
    HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream("D:/201512.xls"));
    HSSFSheet sheet = workbook.getSheetAt(0); // 第一個工作表

    // 3. 逐行填充資料 (從第 4 行開始,索引 3)
    for (int i = 0; i < result.size(); i++) {
        FieldPressEntity e = result.get(i);
        HSSFRow row = sheet.getRow(3 + i); // 取得現有行 (保留樣式)

        // 逐欄位寫入 (對應實體屬性 H17~H00 等)
        // 欄位索引 1~28 對應 B~AC 欄
        row.getCell(1).setCellValue(e.getH17());
        row.getCell(2).setCellValue(e.getH18());
        // ... 中間省略 ...
        row.getCell(27).setCellValue(e.getDaily_min());
    }

    // 4. 輸出新檔案
    FileOutputStream out = new FileOutputStream("E:/" + yyyy + mm + ".xls");
    workbook.write(out);
    out.close();
}

三、關鍵技術點

技術點說明
HSSFWorkbook處理 .xls (Excel 97-2003) 格式
getRow / getCell取得現有行/儲存格,保留原樣式、公式、合併儲存格
setCellValue僅更新儲存格值,不影響格式
FileOutputStream寫入新檔案,原範本不變
Entity 映射DAO 查詢結果封裝為 Entity,屬性對應欄位

四、擴展與注意事項

  • .xlsx 支援: 改用 XSSFWorkbook (OOXML 格式)
  • 大數據量: 考慮 SXSSFWorkbook (流式寫入,低記憶體)
  • 日期/數值格式: 使用 CellStyle + DataFormat 統一格式
  • 資源釋放: 必須 workbook.close() 與 out.close() (try-with-resources)
  • SSH 架構整合: 需配置 DAO、Service、Action、Entity 四層,前端可用 JSP/JS 觸發

五、參考資源

Apache POI 官方指南:Excel 操作完整教學

核心優勢: 範本法將「版面設計」與「資料填充」分離,美工調整版面無需修改程式碼,維護性極佳。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved