Java 如何将excel数据导入mysql?

Java 如何将excel数据导入mysql?,java,mysql,vba,excel,Java,Mysql,Vba,Excel,我有一个包含许多字段的excel表格。我有一个数据库,其中包含许多相互链接的表。excel工作表包含的字段将插入到多个相互链接的表中 例如sample.xls或.xlsx id | Name | Number | Designation 1 | manan | 987654321 | software eng. 数据库:个人表 id | Name | Number | Desig_Id 1 | manan | 987654321 | 1 数据库:名称表 Desig_id

我有一个包含许多字段的excel表格。我有一个数据库,其中包含许多相互链接的表。excel工作表包含的字段将插入到多个相互链接的表中

例如sample.xls或.xlsx

id | Name  | Number    | Designation
1  | manan | 987654321 | software eng.
数据库:个人表

id | Name  | Number    | Desig_Id
1  | manan | 987654321 | 1
数据库:名称表

Desig_id | Designation Name
1        | software eng.

这只是一个示例,我同时链接了许多表。如何导入此类数据?

编码本身有点复杂,但如果您想要一个简单的答案;您可以使用与来自Java的数据库交互,也可以使用与来自Java的Excel文件交互(它们的页面非常有用)。

您可以将所有记录拆分为多个表,就像它们在数据库中一样。 您将为每个表创建一个excel文件,并使用导入。您还可以将excel文件导出为
.csv
,并使用

如果您不想规范化excel文件,另一种方法是解析文件并以编程方式导入。您可以使用读取excel文件,也可以将excel文件导出为csv文件并将其解析为文本文件

import java.io.FileInputStream;
import java.io.InputStream;

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.ss.usermodel.WorkbookFactory;

public class App {

    public static void main(String[] args) {
        Workbook wb = null;
        InputStream inp = null;
        try {
            // InputStream inp = new FileInputStream("workbook.xls");
            inp = new FileInputStream("workbook.xlsx");
            wb = WorkbookFactory.create(inp);
            Sheet sheet = wb.getSheetAt(0);
            for (Row row : sheet) {
                for (Cell cell : row) {
                    System.out.println(getCellValue(cell));
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try { if(wb != null) wb.close(); } catch (Exception e) {}
            try { if(inp != null) inp.close(); } catch (Exception e) {}
        }
    }

    private static Object getCellValue(Cell cell) {
        switch(cell.getCellType()) {
        case Cell.CELL_TYPE_STRING :
            return cell.getStringCellValue();
        case Cell.CELL_TYPE_NUMERIC : 
            return cell.getNumericCellValue();
        case Cell.CELL_TYPE_BOOLEAN : 
            return cell.getBooleanCellValue();
        case Cell.CELL_TYPE_ERROR : 
            return cell.getErrorCellValue();
        case Cell.CELL_TYPE_FORMULA : 
            return cell.getCellFormula();
        case Cell.CELL_TYPE_BLANK :
            return null;
        default : 
            return null;
        }
    }
}
excel示例(xlsx)

依赖项(Maven)


org.apache.poi
poi
3.12
org.apache.poi
poi ooxml
3.12
org.apache.poi
poi ooxml模式
3.12
org.apache.poi
poi草稿行
3.12
org.apache.poi
卓越的
3.12
org.apache.poi
poi示例
3.12

如何使用Apache POI获取特定列?@mananPetel您可以在行中循环,并为每一行获取该列中的单元格:
for(int i=0;i@MananPatel如果您使用该循环,请确保使用
i Apache poi应该是有用的,因为有大量记录,我不知道您如何为这些记录单独创建不同的excel工作表。如何使用Apache poi获取特定列?因为我的答案解决了您的问题,您应该将其标记为已接受,以便线程可以被删除被认为是封闭的
id  Name    Number  Designation
1   manan_1 9876543211  software eng._1
2   manan_2 9876543212  software eng._2
3   manan_3 9876543213  software eng._3
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.12</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.12</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml-schemas</artifactId>
    <version>3.12</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-scratchpad</artifactId>
    <version>3.12</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-excelant</artifactId>
    <version>3.12</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-examples</artifactId>
    <version>3.12</version>
</dependency>