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零基础精通方法篇

    Java零基础精通方法篇攻略 Java作为一门在现代编程界十分流行的语言,其学习曲线也是比较陡峭的。学习方法很重要,下面是一些针对Java零基础学习的方法。 1. 确定学习路线 Java语言许多知识点非常广泛,在学习Java之前,了解和确定自己所要学习的路线非常重要。建议先学习Java基本语法,然后跟随Java的应用功能,例如网络编程、GUI编程、并发等。同…

    Java 2023年5月23日
    00
  • java 非对称加密算法DH实现详解

    Java 非对称加密算法 DH 实现详解 什么是 DH 算法 DH(Diffie-Hellman)算法是一种基于数学问题的密钥交换协议,旨在让通信双方在不将真正的密钥送出的情况下,各自生成具有相同密钥的方法。DH 算法主要用于加密通信和加密存储,其最大的优点在于,即使密文被截获,攻击者也无法破解密文,从而保证通信安全性。 DH 算法详解 密钥交换流程 DH …

    Java 2023年5月19日
    00
  • bootstrap table使用入门基本用法

    接下来我将详细讲解“bootstrap table使用入门基本用法”的完整攻略。 什么是Bootstrap Table? Bootstrap Table是基于Bootstrap框架开发的一个表格插件,可以方便地创建美观、高度可定制的数据表格。它支持排序、分页、搜索、过滤等常见表格功能,同时也支持自定义样式、事件、单元格渲染等高级功能。 如何使用Bootstr…

    Java 2023年6月15日
    00
  • 关于properties配置文件的加密方式

    关于properties配置文件的加密方式,可以采用Jasypt这个Java加密工具来实现。 具体步骤如下: 导入Jasypt的依赖包,可以在Maven中添加以下配置: <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>ja…

    Java 2023年5月20日
    00
  • Java面向对象编程(封装/继承/多态)实例解析

    Java面向对象编程(封装/继承/多态)实例解析 什么是面向对象编程? 面向对象编程(Object-oriented Programming)简称 OOP,是一种将现实世界中的事物抽象成为计算机程序中的对象的编程思想,它强调类、对象、封装、继承、多态等概念,使得程序易于维护、扩展和重用。 在Java中,面向对象编程是一种很重要的编程范式,Java的基础类库(…

    Java 2023年5月26日
    00
  • maven 在执行package,install,deploy时使用clean与不使用clean的不同之处

    Maven 是一种流行的项目管理工具,它以项目对象模型 (POM) 为基础,提供了一种标准化的方式来构建和管理项目。在执行 Maven 中的几个主要操作时,包括 package、install、deploy 等,我们可以使用 clean 来清理之前编译的产物,或者不使用 clean 来直接构建产物。使用或者不使用 clean 的主要区别在于编译产物是否被清理…

    Java 2023年5月19日
    00
  • 详解java.lang.NumberFormatException错误及解决办法

    详解java.lang.NumberFormatException错误及解决办法 在Java编程中,如果出现数字字符串转换为数字类型时出现错误,就会抛出一个NumberFormatException异常。这种错误通常是由于尝试将一个无效的字符串转换为数字类型引起的。在本文中,我们将详细了解这个常见错误的原因和解决办法,并提供两个示例说明其中的一个常见场景。 …

    Java 2023年5月27日
    00
  • 微信小程序 生成携带参数的二维码

    生成携带参数的二维码是微信小程序开发中常用的功能之一。首先我们需要了解微信小程序二维码中的参数分为两种类型:场景值和自定义参数。场景值是微信提供的一些可识别的标识,自定义参数则是开发者自行定义的参数。下面是详细的攻略: 1. 场景值二维码 在小程序代码中调用微信提供的场景值生成 API。将 path 指向需要打开的页面。如果页面需要带参数,可以在 path …

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