Java로 학생 정보 관리 시스템 구현: Excel에서 데이터를 추출하는 실용적인 방법

Java로 학생 정보 관리 시스템을 구현하고 Excel에서 데이터를 읽는 것은 일반적으로 다음 시나리오에 적용됩니다.

데이터 마이그레이션 및 통합: 기존 학생 정보 관리 시스템이 있는 경우 해당 시스템은 데이터베이스나 다른 저장 방법을 사용할 수 있지만 이 데이터를 새 시스템으로 마이그레이션하려고 합니다. Excel 파일 형식은 보기 및 편집이 쉽기 때문에 Excel 파일은 이 데이터를 마이그레이션하는 편리한 방법을 제공할 수 있습니다.

데이터 가져오기: 새로운 학생 정보 관리 시스템을 개발하는 경우 다른 소스에서 학생 정보를 가져와야 할 수도 있습니다. Excel 파일은 특히 데이터가 이미 Excel 파일에 있는 경우 쉽게 얻고 사용할 수 있는 형식일 수 있습니다.

데이터 분석: 학생 정보의 통계 분석이나 시각화를 수행해야 하는 경우 Excel 파일이 좋은 출발점이 될 수 있습니다. Java 프로그램을 사용하여 Excel 파일을 읽은 다음 데이터를 처리하고 분석할 수 있습니다.

데이터 입력 단순화: 경우에 따라 학생이나 교직원은 복잡한 온라인 양식이나 인터페이스를 거치는 대신 Excel 스프레드시트를 사용하여 데이터를 입력하는 것을 선호할 수 있습니다. Java 프로그램은 이러한 Excel 파일을 읽고 데이터베이스나 시스템으로 가져올 수 있습니다.

다른 시스템과의 통합: 이미 Excel 형식의 데이터를 사용하는 외부 시스템이나 서비스(예: 금융 시스템, 학생 성취도 서비스)가 있는 경우 Java 프로그램은 이러한 Excel 파일을 읽어 데이터를 통합할 수 있습니다.

백업 및 복원: 경우에 따라 데이터를 Excel 파일로 내보내는 것이 편리한 백업 전략이 될 수 있습니다. 마찬가지로 시스템 오류나 데이터 손실이 발생하는 경우 이러한 Excel 파일에서 데이터를 복구할 수 있습니다.

이 기사에서는 Java를 사용하여 Excel 파일을 읽고 예외를 처리하는 방법을 자세히 소개합니다.

1. 환경 준비

시작하기 전에 Java 개발 환경을 설치하고 기본 Java 구문을 이해하고 있는지 확인하십시오. Excel 파일을 처리하기 위해 Microsoft Office 파일 처리를 위해 특별히 설계된 널리 사용되는 Java 라이브러리인 Apache POI 라이브러리를 사용합니다. 아직 Apache POI가 설치되어 있지 않은 경우 Maven 또는 Gradle을 통해 프로젝트에 추가할 수 있습니다.

2. 코드 구현

FuncGPT(Function Function)를 요청하면 Apache POI 라이브러리를 사용하여 Excel 파일을 빠르게 읽을 수 있습니다.

요구사항을 입력하세요:

EXCEL 데이터 읽기, 입력 매개변수: 파일 파일, 출력 매개변수: 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>>的格式

3. 예외 처리

파일 및 데이터를 처리하는 동안 다양한 오류가 발생할 수 있습니다. 예를 들어 파일이 존재하지 않거나 파일이 Excel 파일이 아닐 수 있습니다. 또한 셀에 예상한 데이터가 포함되어 있지 않을 수도 있습니다. 이러한 상황을 처리하려면 더 많은 오류 검사 및 처리 코드를 추가해야 합니다. 예를 들어:

1. 파일 존재 여부 확인 : 파일을 열기 전 해당 파일이 존재하는지 확인할 수 있습니다. 파일이 존재하지 않으면 예외를 발생시키거나 오류 메시지를 반환할 수 있습니다.

2. 파일이 Excel 파일인지 확인: 파일을 열기 전에 파일의 몇 바이트를 읽고 해당 파일이 Excel 파일의 서명인지 확인할 수 있습니다(예: POI 라이브러리의 경우 "Poi"). . 그렇지 않은 경우 예외를 발생시키거나 오류 메시지를 반환할 수 있습니다.

3. 셀의 데이터 유형을 확인하십시오. 셀에 문자열이 포함되어 있지 않으면 getStringCellValue 메소드는 RuntimeException을 발생시킵니다. getCellType 메소드를 사용하여 셀의 데이터 유형을 확인하고 필요에 따라 데이터를 처리할 수 있습니다.

4. 빈 행 처리: 시트의 행이 비어 있으면 rowIterator.hasNext()가 false를 반환하여 데이터 처리를 중지합니다. 각 행에 데이터가 포함되어 있는지 확인하는 검사를 추가할 수 있습니다.

FuncGPT는 귀하의 필요에 따라 단시간에 명확하고, 이해하기 쉽고, 읽기 쉽고, 비교적 정확한 "솔루션"을 제공할 수 있는 온라인 "유명 교사"와 같습니다. box.code. 특정 수요 시나리오에서 개발자는 실제 필요에 따라 FuncGPT(Hui Function)에서 생성된 코드를 기반으로 수정할 수 있습니다.

위의 코드와 설명을 통해 우리는 Java 및 Apache POI 라이브러리를 사용하여 Excel 파일을 읽는 방법을 이해합니다. 이는 학생 정보 관리 시스템과 같은 애플리케이션을 개발하는 데 중요합니다. 동시에 가능한 예외를 적절하게 처리하는 것 역시 개발 프로세스의 필수적인 부분입니다.

구글은 Rust와 C++의 상호운용성 향상을 위해 Rust Foundation에 100만 달러를 기부했습니다. Mozilla가 포기한 웹 엔진 프로젝트 'Servo'는 2024년에 다시 태어납니다. Go 언어의 아버지는 성공 요인을 요약합니다: 마스코트 필수입니다 jQuery 4.0 .0 베타 매일 오픈 소스 출시: "작지만 아름답다" Tauri는 Android 및 iOS를 지원하고 Apple의 오픈 소스 Pkl Google Bard는 Gemini로 이름이 변경되었으며 무료 독립 APP Vite 5.1이 공식 출시되었으며 프런트 엔드 구성 도구 갤러리 시스템 PicHome 2.0.1 출시 자바 툴셋 Hutool-5.8.26 출시, 534개 언어를 지원하는 대형 오픈소스 모델 MaLA-500 출시.
{{o.이름}}
{{이름}}

추천

출처my.oschina.net/u/4868096/blog/11013711