数据库 · 10 11 月, 2024

使用POI把查詢到的數據表數據導出到Excel中,一個表一個Sheet

使用POI把查詢到的數據表數據導出到Excel中,一個表一個Sheet

在當今數據驅動的世界中,將數據導出到Excel中是一項常見的需求。無論是報告、數據分析還是數據共享,Excel都是一個強大的工具。Apache POI是一個流行的Java庫,專門用於操作Microsoft Office格式的文件,包括Excel。本文將介紹如何使用POI將查詢到的數據表數據導出到Excel中,並為每個數據表創建一個單獨的工作表(Sheet)。

Apache POI簡介

Apache POI是一個開源的Java庫,允許開發者讀取和寫入Microsoft Office格式的文件。它支持多種格式,包括Excel(.xls和.xlsx)、Word和PowerPoint。POI的靈活性和功能使其成為處理Excel文件的理想選擇。

環境設置

在開始之前,您需要確保您的開發環境中已經包含Apache POI庫。您可以通過Maven來添加依賴,以下是Maven的依賴配置:


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

數據查詢

在導出數據之前,首先需要從數據庫中查詢數據。這裡以MySQL為例,使用JDBC來執行查詢:


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class DatabaseQuery {
    public static ResultSet getData(String query) throws Exception {
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database", "username", "password");
        Statement stmt = conn.createStatement();
        return stmt.executeQuery(query);
    }
}

導出數據到Excel

接下來,我們將使用Apache POI將查詢到的數據導出到Excel中。以下是導出數據的示例代碼:


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

import java.io.FileOutputStream;

public class ExcelExporter {
    public static void exportToExcel(ResultSet resultSet, String sheetName) throws Exception {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet(sheetName);

        // 創建表頭
        Row headerRow = sheet.createRow(0);
        for (int i = 0; i < resultSet.getMetaData().getColumnCount(); i++) {
            Cell cell = headerRow.createCell(i);
            cell.setCellValue(resultSet.getMetaData().getColumnName(i + 1));
        }

        // 填充數據
        int rowNum = 1;
        while (resultSet.next()) {
            Row row = sheet.createRow(rowNum++);
            for (int i = 0; i < resultSet.getMetaData().getColumnCount(); i++) {
                Cell cell = row.createCell(i);
                cell.setCellValue(resultSet.getString(i + 1));
            }
        }

        // 寫入文件
        try (FileOutputStream fileOut = new FileOutputStream("output.xlsx")) {
            workbook.write(fileOut);
        }
        workbook.close();
    }
}

將多個數據表導出到不同的Sheet

如果需要將多個數據表導出到同一個Excel文件中的不同工作表,可以在主程序中調用多次導出方法,並為每個數據表指定不同的工作表名稱:


public class Main {
    public static void main(String[] args) {
        try {
            String[] queries = {
                "SELECT * FROM table1",
                "SELECT * FROM table2"
            };
            String[] sheetNames = {"Table1", "Table2"};

            for (int i = 0; i < queries.length; i++) {
                ResultSet resultSet = DatabaseQuery.getData(queries[i]);
                ExcelExporter.exportToExcel(resultSet, sheetNames[i]);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

總結

使用Apache POI將查詢到的數據表數據導出到Excel中是一個簡單而有效的過程。通過上述步驟,您可以輕鬆地將多個數據表導出到不同的工作表中,方便後續的數據分析和報告生成。對於需要處理大量數據的企業來說,這種方法不僅提高了工作效率,還能夠更好地管理和展示數據。

如果您正在尋找高效的數據處理解決方案,考慮使用香港VPS來運行您的應用程序,這將為您提供穩定的性能和靈活的資源配置。