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数据库