Javaで学生情報管理システムを実装:Excelからデータを抽出する実用的な方法

Java で学生情報管理システムを実装し、Excel からデータを読み取ることは、通常、次のシナリオに当てはまります。

データの移行と統合: 既存の学生情報管理システムがある場合、そのシステムではデータベースまたはその他の保存方法が使用されている可能性がありますが、このデータを新しいシステムに移行したいと考えています。 Excel ファイルは表示と編集が簡単なため、このデータを移行するのに便利な方法となります。

データのインポート: 新しい学生情報管理システムを開発している場合は、他のソースから学生情報をインポートする必要がある場合があります。 Excel ファイルは、特にデータが既に Excel ファイル内にある場合に、取得して使用するのが簡単な形式です。

データ分析: 学生情報の統計分析または視覚化を実行する必要がある場合は、Excel ファイルが良い出発点になる可能性があります。 Java プログラムを使用して Excel ファイルを読み取り、データを処理および分析できます。

データ入力の簡素化: 場合によっては、学生や教職員は、複雑なオンライン フォームやインターフェイスを使用するよりも、Excel スプレッドシートを使用してデータを入力することを好む場合があります。 Java プログラムは、これらの Excel ファイルを読み取り、データベースまたはシステムにインポートできます。

他のシステムとの統合: すでに Excel 形式のデータを使用している外部システムまたはサービス (財務システムや学業成績サービスなど) がある場合、Java プログラムはこれらの Excel ファイルを読み取ることでデータを統合できます。

バックアップと復元: 場合によっては、データを Excel ファイルにエクスポートすることが便利なバックアップ戦略となることがあります。同様に、システム障害やデータ損失が発生した場合でも、これらの Excel ファイルからデータを回復できます。

この記事では、Javaを使ってExcelファイルを読み込み、例外を処理する方法を詳しく紹介します。

1. 環境整備

始める前に、Java 開発環境がインストールされていることと、基本的な Java 構文を理解していることを確認してください。 Excel ファイルを処理するには、Apache POI ライブラリを使用します。これは、Microsoft Office ファイルを処理するために特別に設計された人気のある Java ライブラリです。 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 は、ユーザーのニーズに基づいて、明確でわかりやすく、読みやすく、比較的正確な「解決策」を短期間で提供してくれるオンラインの「有名な先生」のようなものです。ボックス、コード。特定の需要シナリオでは、開発者は実際のニーズに応じて FuncGPT (Hui Function) によって生成されたコードに基づいて変更を加えることができます。

上記のコードと説明を通じて、Java および Apache POI ライブラリを使用して Excel ファイルを読み取る方法を理解しました。これは、学生情報管理システムなどのアプリケーションを開発する場合に重要です。同時に、考えられる例外を適切に処理することも開発プロセスの不可欠な部分です。

Google、RustとC++の相互運用性向上のためRust財団に100万ドル寄付 Mozillaが放棄したWebエンジンプロジェクト「Servo」が2024年に復活 Go言語の父が成功要因を総括:マスコット jQuery 4.0 .0 ベータ版がオープンソース毎日リリース : 「小さいけど美しい」Tauri が Android と iOS をサポート; Apple のオープンソース Pkl Google Bard が Gemini に名前変更、無料の独立アプリ Vite 5.1 が正式リリース、フロントエンド構築ツール ギャラリー システムPicHome 2.0.1 リリース Java ツールセット Hutool-5.8.26 リリース、ご多幸をお祈りします 534 言語をサポートする大型オープンソース モデル MaLA-500 リリース
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/4868096/blog/11013711