Java实现Excel导入导出数据库的方法示例

下面是Java实现Excel导入导出数据库的方法示例的完整攻略:

一、Excel导入数据库:

  1. 首先,需要添加相关的依赖包,如以下示例代码所示:
<!-- poi组件 -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.9</version>
</dependency>

<!-- poi-excel组件 -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.9</version>
</dependency>

<!-- ojdbc组件,具体版本根据自己项目的实际情况配置 -->
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0</version>
</dependency>
  1. 创建一个工具类,进行Excel文件读取并将数据插入数据库。以下示例代码以读取Excel文件中的用户列表为例,将数据插入名为“user_info”的数据库表中。
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class ExcelImporter {

    public static void importExcel(File file) throws Exception {
        // 加载Oracle驱动
        Class.forName("oracle.jdbc.driver.OracleDriver");

        // 获取数据库连接
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/xe", "username", "password");

        // 创建PreparedStatement对象
        PreparedStatement pstmt = conn.prepareStatement("INSERT INTO user_info (id, name, age, address) VALUES (?, ?, ?, ?)");

        // 创建Excel文档对象
        Workbook workbook = new XSSFWorkbook(new FileInputStream(file));

        // 读取第一个工作表
        Sheet sheet = workbook.getSheetAt(0);

        // 遍历工作表中的每一行
        for (int i = 1; i <= sheet.getLastRowNum(); i++) {
            // 读取当前行
            Row row = sheet.getRow(i);

            // 获取单元格中的值
            int id = (int) row.getCell(0).getNumericCellValue();
            String name = row.getCell(1).getStringCellValue();
            int age = (int) row.getCell(2).getNumericCellValue();
            String address = row.getCell(3).getStringCellValue();

            // 将值设置到PreparedStatement中
            pstmt.setInt(1, id);
            pstmt.setString(2, name);
            pstmt.setInt(3, age);
            pstmt.setString(4, address);

            // 执行插入操作
            pstmt.executeUpdate();
        }

        // 关闭连接和资源
        pstmt.close();
        conn.close();
        workbook.close();
    }

}
  1. 在Controller中调用工具类的导入方法,将客户端上传的Excel文件插入到数据库中。
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;

@Controller
@RequestMapping("/user")
public class UserController {

    @RequestMapping(value = "/import", method = RequestMethod.POST)
    public String importExcel(MultipartFile file) throws Exception {
        // 创建临时文件
        File tempFile = File.createTempFile("temp", null);
        // 保存上传的文件到临时文件中
        file.transferTo(tempFile);
        // 调用导入方法
        ExcelImporter.importExcel(tempFile);
        // 删除临时文件
        tempFile.delete();
        // 重定向到用户列表页面
        return "redirect:/user/list";
    }

}

二、Excel导出数据库:

  1. 首先,需要添加相关的依赖包,如以下示例代码所示:
<!-- poi组件 -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.9</version>
</dependency>

<!-- poi-excel组件 -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.9</version>
</dependency>

<!-- ojdbc组件,具体版本根据自己项目的实际情况配置 -->
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0</version>
</dependency>
  1. 创建一个工具类,进行数据库查询并将数据写入Excel文件。以下示例代码以查询名为“user_info”的数据库表中的用户列表为例,将数据写入Excel文件中。
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class ExcelExporter {

    public static void exportExcel(File file) throws Exception {
        // 加载Oracle驱动
        Class.forName("oracle.jdbc.driver.OracleDriver");

        // 获取数据库连接
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/xe", "username", "password");

        // 创建PreparedStatement对象
        PreparedStatement pstmt = conn.prepareStatement("SELECT id, name, age, address FROM user_info");

        // 执行查询操作,获取结果集
        ResultSet rs = pstmt.executeQuery();

        // 创建Excel文档对象
        Workbook workbook = new XSSFWorkbook();

        // 创建一个工作表
        Sheet sheet = workbook.createSheet("用户列表");

        // 创建表头行
        Row headerRow = sheet.createRow(0);
        headerRow.createCell(0).setCellValue("编号");
        headerRow.createCell(1).setCellValue("姓名");
        headerRow.createCell(2).setCellValue("年龄");
        headerRow.createCell(3).setCellValue("地址");

        // 遍历结果集,填充数据
        int rowIndex = 1;
        while (rs.next()) {
            // 创建一行
            Row row = sheet.createRow(rowIndex++);

            // 填充数据
            row.createCell(0).setCellValue(rs.getInt("id"));
            row.createCell(1).setCellValue(rs.getString("name"));
            row.createCell(2).setCellValue(rs.getInt("age"));
            row.createCell(3).setCellValue(rs.getString("address"));
        }

        // 将Excel文件写入到磁盘中
        workbook.write(new FileOutputStream(file));

        // 关闭连接和资源
        rs.close();
        pstmt.close();
        conn.close();
        workbook.close();
    }

}
  1. 在Controller中调用工具类的导出方法,将数据库中的用户列表生成Excel文件,并将文件发送给客户端下载。
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.net.URLEncoder;

@Controller
@RequestMapping("/user")
public class UserController {

    @RequestMapping(value = "/export", method = RequestMethod.GET)
    public void exportExcel(HttpServletRequest request, HttpServletResponse response) throws Exception {
        // 获取项目根目录
        String basePath = request.getSession().getServletContext().getRealPath("/");
        // 定义Excel文件路径
        String filePath = basePath + "/temp/user_list.xlsx";
        // 调用导出方法,生成Excel文件
        ExcelExporter.exportExcel(new File(filePath));
        // 设置下载响应头
        response.setContentType("application/octet-stream;charset=UTF-8");
        response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("用户列表.xlsx", "UTF-8"));
        // 将Excel文件发送给客户端下载
        response.getOutputStream().write(FileUtils.readFileToByteArray(new File(filePath)));
    }

}

以上是Java实现Excel导入导出数据库的方法示例的完整攻略,其中包含了两条示例。希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现Excel导入导出数据库的方法示例 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java throws关键字的作用是什么?

    Java中的throws关键字通常用于在方法声明中指定该方法可能会抛出的异常类型,从而告知调用方需要处理可能发生的异常。 具体来说,使用throws关键字可以帮助Java程序员避免不必要的异常处理,将异常传递到上级调用者,以便在更高层次上处理异常。这也是Java异常处理机制中的一部分。 考虑以下示例代码: public void readFile(Strin…

    Java 2023年4月27日
    00
  • js如何设置在iframe框架中指定div不显示

    使用JavaScript直接在iframe中指定div不显示的方法: 在iframe框架中使用JavaScript来控制指定div元素的display属性,让其不显示。可以使用以下的代码实现: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&…

    Java 2023年6月16日
    00
  • Java二维数组计算集合总结

    下面是关于Java二维数组计算集合总结的完整攻略: 概述 二维数组是Java中常见的数据结构之一,它可以用来表示一个表格或矩阵,通常由若干行和列组成。本次总结主要针对二维数组的计算集合操作,包括对行、列进行计算,以及筛选出符合条件的行或列等。本文的示例代码基于Java 8编写。 创建二维数组 在Java中,我们可以使用如下方式创建二维数组: int[][] …

    Java 2023年5月26日
    00
  • Java gbk转utf-8

    Java中GBK与UTF-8是常见的字符编码方式,这里讲解如何将GBK编码的字符串转换成UTF-8编码的字符串,共有两种方法。 方法一:手动转换 手动转换需要使用Java的编码转换API,具体步骤如下: 将字符串按GBK编码方式解码为字节数组; 将字节数组按UTF-8编码方式组装成字符串。 示例代码如下: import java.io.Unsupported…

    Java 2023年5月20日
    00
  • Spring Data JPA 之 JpaRepository的使用

    下面将为您详细讲解Spring Data JPA之JpaRepository的使用攻略。 什么是JpaRepository? JpaRepository是Spring Data JPA提供的一个接口,它继承自PagingAndSortingRepository接口,同时它还继承了CrudRepository接口,提供了一些与业务相关的方法,如save、del…

    Java 2023年5月20日
    00
  • Java实现简单的分页功能

    下面是“Java实现简单的分页功能”的完整攻略。 第一步:引入相关依赖 在项目的pom.xml文件中引入以下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa&…

    Java 2023年5月26日
    00
  • 详解通过maven运行项目的两种方式

    下面为你详细讲解一下关于“通过maven运行项目的两种方式”的完整攻略。 一、基础知识 在讲解这两种方式之前,先了解一下maven。maven是一个Java项目的自动化构建工具,可以进行项目的编译、测试、打包和部署等一系列操作。它通过一个POM(Project Object Model)文件来管理项目依赖和配置。 二、方式一:使用maven插件运行项目 这种…

    Java 2023年5月20日
    00
  • 比较Ajax的三种实现及JSON解析

    实现Ajax的方式有很多,常用的有XMLHttpRequest、Fetch API和Axios。这里将详细讲解这三种实现方式以及相关的JSON解析。 XMLHttpRequest实现Ajax XMLHttpRequest是原生Ajax最常用的实现方式。具体的实现步骤如下: 创建XMLHttpRequest对象 javascript const xhr = n…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部