Java解析Excel文件并把数据存入数据库

关于如何用Java解析Excel文件并把数据存入数据库,下面提供一份完整的攻略供你参考。

准备工作

在开始操作之前,需要你先准备好以下工具和环境:

  • JDK:Java开发环境。你可以从Oracle官网上下载安装最新版的JDK。
  • MySQL:数据库系统。你可以根据需要安装在本地或者使用云服务商提供的MySQL服务。
  • Apache POI:用于操作Excel文件的Java类库。可以从官网上下载最新版的Apache POI。

解析Excel文件

首先需要用Apache POI将Excel文件读取到Java的内存中,然后逐行解析每个单元格中的数据。

下面是读取Excel文件并输出内容的示例代码:

import java.io.File;
import java.io.FileInputStream;
import java.util.Iterator;
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 ExcelParser {
    public static void main(String[] args) {
        try {
            FileInputStream file = new FileInputStream(new File("data.xlsx"));
            Workbook workbook = new XSSFWorkbook(file);

            Sheet sheet = workbook.getSheetAt(0);
            Iterator<Row> rowIterator = sheet.iterator();
            while (rowIterator.hasNext()) {
                Row row = rowIterator.next();
                Iterator<Cell> cellIterator = row.cellIterator();

                while (cellIterator.hasNext()) {
                    Cell cell = cellIterator.next();
                    switch (cell.getCellType()) {
                        case Cell.CELL_TYPE_NUMERIC:
                            System.out.print(cell.getNumericCellValue() + "\t");
                            break;
                        case Cell.CELL_TYPE_STRING:
                            System.out.print(cell.getStringCellValue() + "\t");
                            break;
                    }
                }
                System.out.println("");
            }
            file.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

这个示例代码中,我们首先创建一个FileInputStream对象来读取Excel文件,并通过XSSFWorkbook将Excel文件转换成Java的内存对象。

然后,我们获取第一个Sheet并通过iteator来遍历每一行,再通过iterator遍历每个单元格。根据单元格的类型,我们输出不同的内容。

存储数据到数据库

解析Excel文件之后,我们需要把获取到的数据存储到数据库中。和读取Excel文件一样,我们也需要通过Java提供的JDBC工具连接到MySQL数据库,并把数据写入到表中。

下面是将Excel文件中的数据存储到MySQL数据库的示例代码:

import java.io.File;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.Iterator;
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 ExcelToMySQL {
    public static void main(String[] args) {
        String jdbcURL = "jdbc:mysql://localhost:3306/test";
        String username = "root";
        String password = "";

        String excelFilePath = "data.xlsx";

        int batchSize = 20;

        Connection connection = null;

        try {
            long start = System.currentTimeMillis();

            FileInputStream inputStream = new FileInputStream(excelFilePath);

            Workbook workbook = new XSSFWorkbook(inputStream);

            Sheet firstSheet = workbook.getSheetAt(0);
            Iterator<Row> rowIterator = firstSheet.iterator();

            connection = DriverManager.getConnection(jdbcURL, username, password);
            connection.setAutoCommit(false);

            String sql = "INSERT INTO users(name, email, password) VALUES (?, ?, ?)";
            PreparedStatement statement = connection.prepareStatement(sql);    

            int count = 0;

            rowIterator.next(); // skip the header row

            while (rowIterator.hasNext()) {
                Row nextRow = rowIterator.next();
                Iterator<Cell> cellIterator = nextRow.cellIterator();

                while (cellIterator.hasNext()) {
                    Cell nextCell = cellIterator.next();

                    int columnIndex = nextCell.getColumnIndex();

                    switch (columnIndex) {
                        case 0:
                            String name = nextCell.getStringCellValue();
                            statement.setString(1, name);
                            break;
                        case 1:
                            String email = nextCell.getStringCellValue();
                            statement.setString(2, email);
                            break;
                        case 2:
                            String password = nextCell.getStringCellValue();
                            statement.setString(3, password);
                            break;
                    }

                }

                statement.addBatch();

                if (count % batchSize == 0) {
                    statement.executeBatch();
                }

            }

            workbook.close();

            // execute the remaining queries
            statement.executeBatch();

            connection.commit();
            connection.close();

            long end = System.currentTimeMillis();
            System.out.printf("Import done in %d ms\n", (end - start));

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

这个示例代码中,我们首先定义了连接MySQL数据库的URL、用户名和密码等信息。

然后,我们读入Excel文件,并利用JDBC工具连接到MySQL数据库。接着,我们遍历Excel文件中的每一行数据,并通过JDBC将其插入到MySQL数据库中。

值得注意的是,我们通过设置batchSize来优化性能,每20行数据提交一次。

至此,我们就将Java解析Excel文件并把数据存入数据库的全部过程详细讲解完毕。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java解析Excel文件并把数据存入数据库 - Python技术站

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

相关文章

  • notepad++支持什么语言? notepad语言格式设置技巧

    关于”Notepad++支持什么语言”和”Notepad语言格式设置技巧”,以下是详细攻略: Notepad++支持哪些编程语言? Notepad++是一款常用的文本编辑器,它支持多种编程语言和标记语言。下面是Notepad++支持的一些主要编程语言: C、C++、C#、Java、Python、Ruby等大部分主流编程语言。 HTML、CSS、JavaScr…

    Java 2023年6月15日
    00
  • Java开发SpringBoot集成接口文档实现示例

    Java开发SpringBoot集成接口文档实现示例 在Java开发中,Spring Boot是一个非常流行的框架,它可以帮助我们快速搭建Web应用程序。同时,接口文档也是一个非常重要的工具,它可以帮助我们更好地理解和使用API。本文将介绍如何使用Spring Boot集成接口文档,并提供两个示例。 1. 添加Swagger依赖 Swagger是一个流行的接…

    Java 2023年5月14日
    00
  • Tomcat 多站点配置详解及实现方法

    下面是关于 “Tomcat 多站点配置详解及实现方法” 的完整攻略,包含以下内容: 一、前提条件 在进行 Tomcat 多站点配置前,需要提前了解以下几个知识点: Tomcat 的部署方式 基本的 Tomcat 目录结构 虚拟主机的概念 DNS 解析的原理和流程 二、基本步骤 Tomcat 多站点配置的基本流程如下: 创建虚拟主机配置 在 Tomcat 的 …

    Java 2023年5月19日
    00
  • 解决SpringMVC、tomcat、Intellij idea、ajax中文乱码问题

    下面是 SpringMVC、Tomcat、Intellij IDEA 以及 Ajax 中文乱码问题的完整攻略。 1. SpringMVC 乱码问题解决 1.1. SpringMVC 中文乱码示例 示例代码如下: @RequestMapping("/hello") @ResponseBody public String hello(@Req…

    Java 2023年5月20日
    00
  • Java 判断字符为中文实例代码(超管用)

    标题:Java 判断字符为中文实例代码(超管用)攻略 介绍:在Java开发中,有时候需要判断字符是不是中文,本文将详细讲解Java判断字符为中文的实例代码,希望对大家有所帮助。 使用正则表达式判断字符是否为汉字 在Java中,我们可以使用正则表达式来判断字符是否为汉字。我们可以通过Unicode编码范围来表示中文字符,具体方法如下: public stati…

    Java 2023年5月29日
    00
  • Sprint Boot @JsonSubTypes使用方法详解

    @JsonSubTypes是Spring Boot中的一个注解,用于指定一个父类的子类。在本文中,我们将详细介绍@JsonSubTypes注解的作用和使用方法,并提供两个示例。 @JsonSubTypes注解的作用 @JsonSubTypes注解用于指定一个父类的子类。当使用@JsonSubTypes注解标记一个父类时,Spring Boot会自动将该父类的…

    Java 2023年5月5日
    00
  • java过滤特殊字符操作(xss攻击解决方案)

    关于Java过滤特殊字符操作和XSS攻击解决方案,我将介绍以下的内容: 什么是XSS攻击和其危害 Java过滤特殊字符的两种方式 防止XSS攻击的解决方案 两个示例说明Java过滤特殊字符和防止XSS攻击的实现 1.什么是XSS攻击和其危害 XSS指的是CSS(Cascading Sytle Sheets)注入攻击,其中注入的JavaScript脚本需要网站…

    Java 2023年5月27日
    00
  • PHP中auto_prepend_file与auto_append_file用法实例分析

    PHP中auto_prepend_file与auto_append_file用法实例分析 在PHP中,auto_prepend_file和auto_append_file是两个特殊的配置选项,它们分别用于在PHP脚本执行前和执行后自动执行指定的PHP脚本文件。这两个配置选项通常被用于实现一些公共功能或初始化操作。本文将详细讲解auto_prepend_fil…

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