Apache POI - 数据库


本章介绍 POI 库如何与数据库交互。在 JDBC 的帮助下,您可以从数据库检索数据并使用 POI 库将该数据插入到电子表格中。让我们考虑用于 SQL 操作的 MySQL 数据库。

从数据库写入Excel

让我们假设要从 MySQL 数据库test检索以下名为emp_tbl的员工数据表。

电磁脉冲识别码 雇员姓名 二甘醇 薪水 DEPT
1201 戈帕尔 技术经理 45000
1202 马尼沙 校对读者 45000 测试
1203 马斯坦瓦利 技术文件撰稿人 45000
1204 基兰 人力资源管理 40000 人力资源
1205 克兰蒂 操作管理员 30000 行政

使用以下代码从数据库检索数据并将其插入到电子表格中。

import java.io.File;
import java.io.FileOutputStream;

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

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelDatabase {
   public static void main(String[] args) throws Exception {
      Class.forName("com.mysql.jdbc.Driver");
      Connection connect = DriverManager.getConnection( 
         "jdbc:mysql://localhost:3306/test" , 
         "root" , 
         "root"
      );
      
      Statement statement = connect.createStatement();
      ResultSet resultSet = statement.executeQuery("select * from emp_tbl");
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("employe db");
      
      XSSFRow row = spreadsheet.createRow(1);
      XSSFCell cell;
      cell = row.createCell(1);
      cell.setCellValue("EMP ID");
      cell = row.createCell(2);
      cell.setCellValue("EMP NAME");
      cell = row.createCell(3);
      cell.setCellValue("DEG");
      cell = row.createCell(4);
      cell.setCellValue("SALARY");
      cell = row.createCell(5);
      cell.setCellValue("DEPT");
      int i = 2;

      while(resultSet.next()) {
         row = spreadsheet.createRow(i);
         cell = row.createCell(1);
         cell.setCellValue(resultSet.getInt("eid"));
         cell = row.createCell(2);
         cell.setCellValue(resultSet.getString("ename"));
         cell = row.createCell(3);
         cell.setCellValue(resultSet.getString("deg"));
         cell = row.createCell(4);
         cell.setCellValue(resultSet.getString("salary"));
         cell = row.createCell(5);
         cell.setCellValue(resultSet.getString("dept"));
         i++;
      }

      FileOutputStream out = new FileOutputStream(new File("exceldatabase.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("exceldatabase.xlsx written successfully");
   }
}

让我们将上面的代码保存为ExcelDatabase.java。从命令提示符处编译并执行它,如下所示。

$javac ExcelDatabase.java
$java ExcelDatabase

它将在当前目录中生成一个名为exceldatabase.xlsx的 Excel 文件,并在命令提示符下显示以下输出。

exceldatabase.xlsx written successfully

exceldatabase.xlsx文件如下所示

Excel数据库