Java 简易操作Excel

首先,我们需要创建一个数据库表来存储这些单词及其相关信息。以下是一个简单的SQL语句示例,用于创建这样一个表:

```sql

sql 复制代码
CREATE TABLE EnglishWords (
    id INT AUTO_INCREMENT PRIMARY KEY,
    word VARCHAR(255) NOT NULL,
    phonetic TEXT NOT NULL,
    chinese_meaning TEXT NOT NULL,
    example_sentence TEXT NOT NULL,
    example_translation TEXT NOT NULL
);

```

这个表`EnglishWords`有六个字段:

  • `id`:单词的序号,自动增长的主键。

  • `word`:单词本身。

  • `phonetic`:单词的音标。

  • `chinese_meaning`:单词的中文含义。

  • `example_sentence`:单词的例句。

  • `example_translation`:例句的中文释义。

接下来,我们将之前生成的10个单词插入到这个表中:

```sql

sql 复制代码
INSERT INTO EnglishWords (word, phonetic, chinese_meaning, example_sentence, example_translation) VALUES
('Abyss', 'əˈbɪs', '深渊;无底洞', 'She stared into the abyss, contemplating the vastness of the universe.', '她凝视着深渊,沉思着宇宙的浩瀚。'),
('Cataclysm', 'ˈkætəklɪzəm', '大洪水;灾难', 'The city was devastated by the cataclysm, with buildings reduced to rubble.', '城市被灾难摧毁,建筑物变成了废墟。'),
('Ephemeral', 'ɪˈfemərəl', '短暂的;朝生暮死的', 'The beauty of the sunset was ephemeral, vanishing as quickly as it appeared.', '日落之美是短暂的,它出现得快,消失得也快。'),
('Horizon', 'həˈraɪzən', '地平线;范围', 'The new technology expanded the horizons of what was possible in the field.', '这项新技术扩大了该领域可能性的范围。'),
('Inevitable', 'ɪnˈevɪtəbl', '不可避免的', 'It seemed inevitable that the two teams would meet in the championship final.', '这两支队伍似乎不可避免地会在冠军决赛中相遇。'),
('Juxtapose', 'ˈdʒʌkstəpəʊz', '并置;并列', 'The artist juxtaposed bright colors with dark ones to create a striking effect.', '艺术家将明亮的颜色与深色并置,以创造引人注目的效果。'),
('Kaleidoscope', 'kəˈlaɪdəskəʊp', '万花筒', 'Life is like a kaleidoscope, constantly changing patterns and colors.', '生活就像万花筒,不断变化的图案和颜色。'),
('Lethargic', 'ləˈθɑːdʒɪk', '昏睡的;倦怠的', 'After the long flight, he felt lethargic and needed a nap.', '长途飞行后,他感到昏昏欲睡,需要小睡一会儿。'),
('Mosaic', 'məʊˈzeɪɪk', '马赛克;镶嵌艺术', 'The ancient mosaic on the floor depicted scenes from Roman mythology.', '地板上的古老马赛克描绘了罗马神话中的场景。'),
('Nuance', 'ˈnjuːɑːns', '细微差别;语气', 'The artist captured the nuances of light and shadow in the painting.', '艺术家在画作中捕捉到了光影的细微差别。');

```

最后,我们可以使用以下SQL语句来显示表中的所有数据:

```sql

sql 复制代码
SELECT * FROM EnglishWords;

```

这个查询将返回表`EnglishWords`中的所有记录,包括每个单词的所有信息。请注意,实际的数据库操作需要在数据库管理工具或通过编程接口执行。

要将MySQL数据库中的数据写入Excel文件,你可以使用Java的一些库,如Apache POI。下面是一个示例代码,演示如何实现这个功能。这个示例假设你已经有了一个名为`EnglishWords`的表,并且表中包含了之前插入的数据。

首先,确保你的`pom.xml`文件中包含了Apache POI的依赖:

```xml

XML 复制代码
<!-- Apache POI -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>版本号</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>版本号</version>
</dependency>

```

然后,你可以使用以下Java代码来实现将数据写入Excel文件的功能:```java

java 复制代码
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class ExportToExcel {

    public static void exportDataToExcel() throws IOException {
        // 数据库连接信息
        String url = "jdbc:mysql://localhost:3306/你的数据库名";
        String user = "用户名";
        String password = "密码";

        // 创建Excel工作簿
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("EnglishWords");

        // 设置标题行
        Row titleRow = sheet.createRow(0);
        titleRow.createCell(0).setCellValue("ID");
        titleRow.createCell(1).setCellValue("Word");
        titleRow.createCell(2).setCellValue("Phonetic");
        titleRow.createCell(3).setCellValue("Chinese Meaning");
        titleRow.createCell(4).setCellValue("Example Sentence");
        titleRow.createCell(5).setCellValue("Example Translation");

        // 数据库查询
        int rowNum = 1;
        try (Connection conn = DriverManager.getConnection(url, user, password);
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT * FROM EnglishWords")) {

            while (rs.next()) {
                Row row = sheet.createRow(rowNum++);
                row.createCell(0).setCellValue(rs.getInt("id"));
                row.createCell(1).setCellValue(rs.getString("word"));
                row.createCell(2).setCellValue(rs.getString("phonetic"));
                row.createCell(3).setCellValue(rs.getString("chinese_meaning"));
                row.createCell(4).setCellValue(rs.getString("example_sentence"));
                row.createCell(5).setCellValue(rs.getString("example_translation"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        // 写入Excel文件
        try (FileOutputStream outputStream = new FileOutputStream("EnglishWords.xlsx")) {
            workbook.write(outputStream);
        } finally {
            // 关闭工作簿资源
            workbook.close();
        }
    }

    public static void main(String[] args) {
        try {
            exportDataToExcel();
            System.out.println("数据导出成功,文件保存为 EnglishWords.xlsx");
        } catch (IOException e) {
            System.out.println("导出数据时发生错误:" + e.getMessage());
        }
    }
}

```

这段代码首先创建了一个Excel工作簿和工作表,然后从数据库中查询数据并填充到工作表中。最后,它将工作簿写入到一个名为`EnglishWords.xlsx`的文件中。

请注意,你需要将数据库连接信息(URL、用户名、密码)替换为你自己的信息。此外,Apache POI的版本号也需要根据你使用的版本进行替换。

在运行这段代码之前,请确保你已经添加了Apache POI库到你的项目中,并且你的数据库中确实存在`EnglishWords`表和相应的数据。


要将Excel文件的数据写入MySQL数据库,你可以使用Java的一些库,如Apache POI来读取Excel文件,然后使用JDBC来执行插入数据库的操作。以下是一个示例代码,演示如何实现这个功能。

首先,确保你的`pom.xml`文件中包含了Apache POI和MySQL Connector的依赖:

```xml

XML 复制代码
<!-- Apache POI -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>版本号</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>版本号</version>
</dependency>

<!-- MySQL Connector -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>版本号</version>
</dependency>

```

然后,你可以使用以下Java代码来实现将数据从Excel文件写入MySQL数据库的功能:

```java

java 复制代码
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class ImportToMySQL {

    public static void importExcelToMySQL(String excelFilePath) {
        // 数据库连接信息
        String url = "jdbc:mysql://localhost:3306/你的数据库名";
        String user = "用户名";
        String password = "密码";
        String tableName = "EnglishWords";

        // 加载Excel文件
        Workbook workbook;
        try (FileInputStream fileInputStream = new FileInputStream(new File(excelFilePath))) {
            workbook = new XSSFWorkbook(fileInputStream);
        } catch (IOException e) {
            e.printStackTrace();
            return;
        }

        // 获取工作表
        Sheet sheet = workbook.getSheetAt(0);

        // 准备JDBC插入语句
        String sql = "INSERT INTO " + tableName + " (word, phonetic, chinese_meaning, example_sentence, example_translation) VALUES (?, ?, ?, ?, ?)";
        try (Connection conn = DriverManager.getConnection(url, user, password);
             PreparedStatement pstmt = conn.prepareStatement(sql)) {

            // 跳过标题行,从第一行数据开始
            for (int rowIndex = 1; rowIndex <= sheet.getLastRowNum(); rowIndex++) {
                Row row = sheet.getRow(rowIndex);
                if (row == null) {
                    continue;
                }

                // 读取单元格数据
                Cell wordCell = row.getCell(1);
                Cell phoneticCell = row.getCell(2);
                Cell chineseMeaningCell = row.getCell(3);
                Cell exampleSentenceCell = row.getCell(4);
                Cell exampleTranslationCell = row.getCell(5);

                // 设置预处理语句的参数
                pstmt.setString(1, wordCell.getStringCellValue());
                pstmt.setString(2, phoneticCell.getStringCellValue());
                pstmt.setString(3, chineseMeaningCell.getStringCellValue());
                pstmt.setString(4, exampleSentenceCell.getStringCellValue());
                pstmt.setString(5, exampleTranslationCell.getStringCellValue());

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

            System.out.println("数据导入成功");

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if (workbook != null) {
                try {
                    workbook.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public static void main(String[] args) {
        String excelFilePath = "EnglishWords.xlsx"; // Excel文件路径
        importExcelToMySQL(excelFilePath);
    }
}

```

这段代码首先加载Excel文件,然后读取工作表中的数据。对于工作表中的每一行数据,它都会准备一个JDBC的`PreparedStatement`来执行插入操作,并将Excel中的数据作为参数传递给这个语句。最后,它会执行插入操作,并将数据写入到MySQL数据库中。

请注意,你需要将数据库连接信息(URL、用户名、密码)和Excel文件路径替换为你自己的信息。此外,Apache POI和MySQL Connector的版本号也需要根据你使用的版本进行替换。

在运行这段代码之前,请确保你已经添加了Apache POI和MySQL Connector库到你的项目中,并且你的Excel文件`EnglishWords.xlsx`中确实存在数据。

相关推荐
没有bug.的程序员4 分钟前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
一只爱撸猫的程序猿15 分钟前
使用Spring AI配合MCP(Model Context Protocol)构建一个"智能代码审查助手"
spring boot·aigc·ai编程
甄超锋29 分钟前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
cui__OaO1 小时前
Linux软件编程--线程
linux·开发语言·线程·互斥锁·死锁·信号量·嵌入式学习
阿华的代码王国1 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Zyy~1 小时前
《设计模式》装饰模式
java·设计模式
A尘埃1 小时前
企业级Java项目和大模型结合场景(智能客服系统:电商、金融、政务、企业)
java·金融·政务·智能客服系统
鱼鱼说测试1 小时前
Jenkins+Python自动化持续集成详细教程
开发语言·servlet·php
青云交1 小时前
Java 大视界 -- 基于 Java 的大数据可视化在城市交通拥堵治理与出行效率提升中的应用(398)
java·大数据·flink·大数据可视化·拥堵预测·城市交通治理·实时热力图
艾莉丝努力练剑2 小时前
【洛谷刷题】用C语言和C++做一些入门题,练习洛谷IDE模式:分支机构(一)
c语言·开发语言·数据结构·c++·学习·算法