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