如何从4张excel工作表中用java数据创建单个数据库表?

如何从4张excel工作表中用java数据创建单个数据库表?,java,database,Java,Database,在我的项目中,我上传了excel表格,并使用java检索,在收到excel文件后,我只想创建一个数据库表。 这些excel表包含标记列表每个excel表包含单个科目标记列表,如学生姓名、内部、外部、结果。 如果是一张excel表,那么我可以轻松地在db中创建一个表。但是我必须用4张纸创建一个表格 我只是尝试使用for循环列出每个excel文件,并从中逐个获取数据,但这不是我的解决方案 STUDENT NAME CIA ESE TOTAL AJAY G 46

在我的项目中,我上传了excel表格,并使用java检索,在收到excel文件后,我只想创建一个数据库表。 这些excel表包含标记列表每个excel表包含单个科目标记列表,如学生姓名、内部、外部、结果。 如果是一张excel表,那么我可以轻松地在db中创建一个表。但是我必须用4张纸创建一个表格

我只是尝试使用for循环列出每个excel文件,并从中逐个获取数据,但这不是我的解决方案

STUDENT NAME    CIA  ESE      TOTAL

 AJAY G         46   31         77
 AJITH V        41   27         68
AJITH KUMAR     40   26         66
我的Java代码如下:

 String dirs[] = file.list();
        for(String i:dirs) {
            // here i can get the file one by one 
            fis = new FileInputStream(fullpath+"/"+i);
            wb = WorkbookFactory.create(fis);
            System.out.println(wb.getNumberOfSheets());
            sh = wb.getSheet("Sheet1");
            int noOfRows = sh.getLastRowNum();
            int noOfCols = sh.getRow(7).getLastCellNum();
            System.out.println("Rows : "+ noOfRows);
            System.out.println("Cols : "+ noOfCols);
        }
以上是我的excel工作表数据,所有工作表都是相同的,但主题名称不同,因此我可以将其作为文件名

我希望在db中创建一个表,如:

Table name : StudentResult

Stuname | Subject1 | Sub1CIA | Sub1ESE | Subject2 | Sub2CIA | Sub2ESE ...

依此类推,以这样的方式获取剩余的excel工作表列。

假设每个工作表都包含列标题,从所有工作表中收集列标题,并创建一组唯一的列标题。然后,您可以使用这个集合创建数据库表,使用JDBC动态执行DDL


如果要在for循环之后创建表,则在for-loop上方声明一个Set变量,并不断将每个工作表的列标题添加到该表中。一旦控件脱离for循环,您将拥有带有列标题的集合。下面是这方面的伪代码

    // Declare a set here
    Set<String> dbColumns = new HashSet<String>();

    String dirs[] = file.list();
    for(String i:dirs) {

        // For each sheet
        // Get the heading row ( may be col 1 depending on the work sheet)

        // Get the cells from this row

        // Add the values to the dbColumns set
    }

    // Now dbColumns contains the list for columns to be created

    // Iterate through this set and form the DDL Statement

    // Execute the DDL using jdbc

您好,我想您不能理解我的问题是什么,当我的程序在上面的代码循环中输入时,它选择单个excel工作表并处理以提取其中的数据,然后只转到下一个工作表,在这里我如何存储单个excel工作表数据?我想要多张表的数据?如何存储这些数据?如果要在for循环之后创建表,请在for-loop上方声明一个Set变量,并不断将每个工作表中的列标题添加到该表中。一旦控件脱离for循环,您将拥有带有列标题的集合。我已编辑了我的答案,以包含psuedo代码