欢迎访问宙启技术站
智能推送

Java中导出数据库数据到Excel的函数

发布时间:2023-06-24 15:32:59

在Java开发过程中,有时需要将数据库中的数据导出为Excel格式,方便数据分析或者共享。本文将介绍如何使用Java实现数据导出到Excel的功能。

一、创建Excel文件

在Java中,我们可以使用Apache POI库来操作Excel文件。首先需要导入POI库的相关依赖。

    <dependencies>

       <dependency>

            <groupId>org.apache.poi</groupId>

            <artifactId>poi</artifactId>

            <version>4.1.2</version>

        </dependency>

        <dependency>

            <groupId>org.apache.poi</groupId>

            <artifactId>poi-ooxml</artifactId>

            <version>4.1.2</version>

        </dependency>

    </dependencies>

接着,我们可以新建一个Excel工作簿对象,并新建一个工作表,然后在工作表中写入表头。

Workbook workbook = new XSSFWorkbook();// 新建工作簿对象

Sheet sheet = workbook.createSheet();// 新建工作表

// 写入表头

Row row = sheet.createRow(0);

Cell cell0 = row.createCell(0);

cell0.setCellValue("ID");

Cell cell1 = row.createCell(1);

cell1.setCellValue("Name");

Cell cell2 = row.createCell(2);

cell2.setCellValue("Age");

二、获取数据库数据

我们使用JDBC连接数据库,获取数据库中的数据。这里以MySQL数据库为例。

Class.forName("com.mysql.jdbc.Driver");

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "root", "123456");

Statement statement = conn.createStatement();

ResultSet resultSet = statement.executeQuery("select * from student");

三、将数据库数据写入Excel中

接下来,我们需要将查询的结果集中数据写入到Excel表格中。我们可以使用for循环来遍历ResultSet对象中的每一行,并在每一行中创建单元格,将ResultSet对象中的每一列的值写入到对应的单元格中。

int i = 1;// 从第2行开始写入数据

while (resultSet.next()) {

   Row row = sheet.createRow(i++);

   Cell cell0 = row.createCell(0);

   cell0.setCellValue(resultSet.getInt("id"));

   Cell cell1 = row.createCell(1);

   cell1.setCellValue(resultSet.getString("name"));

   Cell cell2 = row.createCell(2);

   cell2.setCellValue(resultSet.getInt("age"));

}

四、保存Excel文件

最后,我们可以在指定路径下创建并保存Excel文件。

FileOutputStream fos = new FileOutputStream("D:\\output.xlsx");

workbook.write(fos);

fos.close();

完整代码:

import java.io.FileOutputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

import org.apache.poi.ss.usermodel.Cell;

import org.apache.poi.ss.usermodel.Row;

import org.apache.poi.ss.usermodel.Sheet;

import org.apache.poi.ss.usermodel.Workbook;

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

public class ExportExcel {

    public static void main(String[] args) throws Exception {

        Workbook workbook = new XSSFWorkbook();// 新建工作簿对象

        Sheet sheet = workbook.createSheet();// 新建工作表

        // 写入表头

        Row row = sheet.createRow(0);

        Cell cell0 = row.createCell(0);

        cell0.setCellValue("ID");

        Cell cell1 = row.createCell(1);

        cell1.setCellValue("Name");

        Cell cell2 = row.createCell(2);

        cell2.setCellValue("Age");

        Class.forName("com.mysql.jdbc.Driver");

        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "root", "123456");

        Statement statement = conn.createStatement();

        ResultSet resultSet = statement.executeQuery("select * from student");

        int i = 1;

        while (resultSet.next()) {

            Row row = sheet.createRow(i++);

            Cell cellID = row.createCell(0);

            cellID.setCellValue(resultSet.getInt("id"));

            Cell cellName = row.createCell(1);

            cellName.setCellValue(resultSet.getString("name"));

            Cell cellAge = row.createCell(2);

            cellAge.setCellValue(resultSet.getInt("age"));

        }

        FileOutputStream fos = new FileOutputStream("D:\\output.xlsx");

        workbook.write(fos);

        fos.close();

    }

}

通过以上代码,我们可以将数据库中的数据导出到Excel文件中。从而方便数据的分享和分析。