首页 > 编程语言 >程序设计之——手把手教你如何从Excel文件中读取学生信息

程序设计之——手把手教你如何从Excel文件中读取学生信息

时间:2023-09-15 17:26:39浏览次数:42  
标签:java 读取 dataList 手把手 Excel import List

在当今信息化时代,计算机技术已经深入到各个领域,而程序设计则成为推动信息化建设的关键技术之一。在众多领域中,学生信息管理系统无疑是其中一个重要的应用。本文将从学生信息管理系统的开发入手,探讨开如何高效且保证质量的完成开发。

假设有一个学生信息管理系统,需要从Excel文件中读取学生的姓名、年龄、成绩等数据,并将这些数据存储到系统中进行进一步的处理和管理。

具体来说,在数据导入/导出系统中调用这个函数,并传入Excel文件作为参数,就可以得到包含学生信息的结果。然后,可以对这个结果进行进一步的处理,比如将学生数据存储到数据库中或进行其他业务逻辑操作。

不同的定制化的数据处理需求场景可能有细微的细节差异,从头开始写又太繁琐,这时候:

1)想好大致的需求,询问FuncGPT

比如输入需求:

读取EXCEL数据,入参: File file,出参:List<Map<String, Object>>

获得完整的代码。

// 类名:ExcelDataReader

// 函数名:readExcelData

// 函数功能:读取Excel数据并返回List<Map<String, Object>>类型的结果

// POM依赖包:

// <dependency>

//     <groupId>org.apache.poi</groupId>

//     <artifactId>poi</artifactId>

//     <version>4.1.2</version>

// </dependency>

// <dependency>

//     <groupId>org.apache.poi</groupId>

//     <artifactId>poi-ooxml</artifactId>

//     <version>4.1.2</version>

// </dependency>

 

import org.apache.poi.ss.usermodel.*;

 

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

 

public class ExcelDataReader {

    /**

     * 读取Excel数据并返回List<Map<String, Object>>类型的结果

     * @param file Excel文件

     * @return Excel数据的List<Map<String, Object>>结果

     * @throws IOException 当读取Excel文件出现错误时抛出IOException

     */

    public static List<Map<String, Object>> readExcelData(File file) throws IOException {

        List<Map<String, Object>> dataList = new ArrayList<>(); // 创建存储Excel数据的List

 

        FileInputStream fis = new FileInputStream(file); // 创建文件输入流

        Workbook workbook = WorkbookFactory.create(fis); // 创建Workbook对象

 

        Sheet sheet = workbook.getSheetAt(0); // 获取第一个Sheet

        int rowCount = sheet.getLastRowNum(); // 获取行数

 

        Row headerRow = sheet.getRow(0); // 获取标题行

        int columnCount = headerRow.getLastCellNum(); // 获取列数

 

        for (int i = 1; i <= rowCount; i++) { // 遍历每一行(跳过标题行)

            Row row = sheet.getRow(i);

            Map<String, Object> rowData = new HashMap<>();

 

            for (int j = 0; j < columnCount; j++) { // 遍历每一列

                Cell cell = row.getCell(j);

                String columnName = headerRow.getCell(j).getStringCellValue(); // 获取列名

 

                Object cellValue;

                switch (cell.getCellType()) { // 根据单元格类型获取单元格值

                    case STRING:

                        cellValue = cell.getStringCellValue();

                        break;

                    case NUMERIC:

                        cellValue = cell.getNumericCellValue();

                        break;

                    case BOOLEAN:

                        cellValue = cell.getBooleanCellValue();

                        break;

                    case FORMULA:

                        cellValue = cell.getCellFormula();

                        break;

                    default:

                        cellValue = null;

                }

 

                rowData.put(columnName, cellValue); // 将列名和单元格值存入rowData

            }

 

            dataList.add(rowData); // 将rowData存入dataList

        }

 

        workbook.close(); // 关闭Workbook对象

        fis.close(); // 关闭文件输入流

 

        return dataList; // 返回Excel数据的结果

    }

}

 

// 函数示例

// 读取Excel数据示例

// 入参:file,Excel文件

// 出参:dataList,Excel数据的List<Map<String, Object>>结果

// 调用示例:

// File file = new File("data.xlsx");

// List<Map<String, Object>> dataList = ExcelDataReader.readExcelData(file);

// System.out.println(dataList);

// 输出结果:例如,Excel数据为:

// | Name  | Age | Grade |

// |-------|-----|-------|

// | Alice | 18  | A     |

// | Bob   | 20  | B     |

// 则输出结果为:[{Name=Alice, Age=18, Grade=A}, {Name=Bob, Age=20, Grade=B}]

// 表示Excel数据被封装为List<Map<String, Object>>的格式

2)根据FuncGPT的代码进行修改

由于EXCEL整体格式内容的话,会影响读取有效行或者有效列的真实数据,故需要对行和列进行相关有效校验。在原有代码的基础上,做一些修改:

①首先判断列,因为列的真实长度会影响到行的读取;

②读取第一行表头,如果遇到空白列,则认定有效列为上一个列的下标。

③获取到有效列之后 去遍历每一行数数据,如果有整行为空则跳出循环,结束数据获取。

随着软件行业的快速发展,在提升软件效率的基础上,软件质量已经成为了至关重要的问题。一款高质量的软件不仅能够提高用户满意度,还能够降低维护和升级成本,为企业带来长期效益。免费使用链接:https://c.suo.nz/aQtaG

标签:java,读取,dataList,手把手,Excel,import,List
From: https://www.cnblogs.com/feisuanyz/p/17705500.html

相关文章

  • 程序设计之——手把手教你如何从Excel文件中读取学生信息
    在当今信息化时代,计算机技术已经深入到各个领域,而程序设计则成为推动信息化建设的关键技术之一。在众多领域中,学生信息管理系统无疑是其中一个重要的应用。本文将从学生信息管理系统的开发入手,探讨开如何高效且保证质量的完成开发。假设有一个学生信息管理系统,需要从Excel文件中读......
  • word安装(ppt、excel),以及word的常用设置
    一、安装word(ppt、excel)0、关闭电脑的所有杀毒软件等到激活的时候,注意断开网络!!!一般,白嫖的时候,激活都要记得断网,杀毒软件是从下载就得关闭了!1、卸载卸载:把电脑所有和办公office相关的软件卸载了,比如:word、ppt、excel、onenote、outlook等等[具体参考下图],注意还有wps也要一起卸载......
  • C#使用NPOI读取模板生成EXCEL
     C#使用NPOI读取模板生成EXCELstringcurrentDirectory=System.AppDomain.CurrentDomain.BaseDirectory;//读取Excel模板文件FileStreamfs=newFileStream(currentDirectory+"BoxPackinglist.xlsx",FileMode.Open,FileA......
  • excel查找内容是否在某一列中
    【1】excel查找内容是否在某一列中查询J553是否在$H$1:$H1006范围内,如找到显示行号,否则显示“未找到”=IFNA(MATCH(J553,$H$1:$H1006,0),"未找到") 翻译搜索复制......
  • excel如何快速下拉到底部?
    1、键盘操作:在键盘上按住Ctrl+箭头键(向下),可以快速的将表格定位到最底部。2、拖动滚动条:将鼠标定位到滚动条的箭头,进行拖动,可以实现快速下拉到最底部。3、利用End键:在键盘上按住End键,可以实现快速定位到最底部,只是不能控制定位到哪一行,只能定位到末尾行。......
  • excel禁止输入重复数据
    禁止输入重复的数据,我们利用的功能是数据验证首先选择需要设置的数据区域,然后点击【数据】功能组找到数据验证,将【允许】设置为【自定义】随后在下方将公式设置为=COUNTIF(A:A,A4)=1,在这里A4就是第一个姓名的位置......
  • python利用openpyxl实现利用excel每行数据填入对应模板批量生成excel
    一、openpyxl常见操作可以参考:https://blog.csdn.net/JunChen681/article/details/1260532061、openpyxl把excel分成了三层Workbook是对工作簿的抽象(工作簿,一个excel文件包含多个sheet。)Worksheet是对表格的抽象(工作表,一个workbook有多个,表名识别,如“sheet......
  • Excel的使用
    Excel的使用有一个表格,如下:fileindex1index2index3index4index5index6score距离112.5312.11129717211.7005963691远213.4911.61173702512.676969622近30.973.240.932.14138375712.8054388353近413.0411.99751643514.495......
  • 手把手搭建一个完整的javaweb项目(适合新手)
    手把手搭建一个完整的javaweb项目本案例使用Servlet+jsp制作,用MyEclipse和Mysql数据库进行搭建,详细介绍了搭建过程及知识点。 下载地址:http://download.csdn.net/detail/qq_23994787/9904842  点击下载主要功能有:1.用户注册2.用户登录3.用户列表展示4.用户信息修改......
  • yaml文件读取
    yaml文件 读取Yaml文件importyamlclassYamlUtil:def__init__(self,yaml_file):"""通过init方法把Yaml文件传入到这个类:paramyaml_file:"""self.yaml_file=yaml_file#读取Yaml文件defre......