シナリオケース:
学生情報管理システムがあると仮定すると、学生の氏名、年齢、学年などのデータをExcelファイルから読み取り、システムに保存して加工・管理する必要があります。
具体的には、データインポート/エクスポートシステムでこの関数を呼び出し、Excelファイルをパラメータとして渡すことで、生徒情報を含む結果を取得できます。次に、この結果に対して、生徒データをデータベースに保存したり、他のビジネス ロジック操作を実行したりするなど、さらなる処理を実行できます。
Javaで開発された学生情報管理システムでは、Excelデータの読み込みが一般的な要件となります。Excel ファイルは学生情報の入力ソースとしてよく使用されるため、Java を使用して Excel データを読み取る方法を知ることは、開発者にとって必須のスキルです。この記事では、Javaを使ってExcelファイルを読み込み、例外を処理する方法を詳しく紹介します。
1.環境整備
始める前に、Java 開発環境がインストールされていることと、基本的な Java 構文を理解していることを確認してください。Excel ファイルを処理するために、Apache POI ライブラリを使用します。これは、Microsoft Office ファイルを処理するために特別に設計された人気のある Java ライブラリです。Apache POI がインストールされていない場合は、Maven または Gradle を介してプロジェクトに追加できます。
2.コードの実装
まず、必要なライブラリをインポートする必要があります。Java では、これは通常、import ステートメントを使用して行われます。次に、クラスを作成し、Excel ファイルを読み取るメソッドを定義します。
org.apache.poi.ss.usermodel.* をインポートします。
org.apache.poi.xssf.usermodel.XSSFWorkbook をインポートします。
java.io.ファイルをインポートします。
java.io.FileInputStreamをインポートします。
インポート java.io.IOException;
java.util.Iteratorをインポートします。
次に、ファイル パスをパラメータとして受け取り、すべての学生情報を含むリストを返す readExcel というメソッドを定義します。
public List<Student> readExcel(String filePath) {
List<Student> 学生 = new ArrayList<>();
try (FileInputStream fis = new FileInputStream(new File(filePath))) {
ワークブック workbook = new XSSFWorkbook(fis);
Sheet Sheet = workbook.getSheetAt(0); // 最初のシートを読み取ります
Iterator<Row> rowIterator =sheet.iterator(); // 行イテレータを作成します
while (rowIterator.hasNext()) {
行行 = rowIterator.next();
Cell cell = row.getCell(0); // 最初の列のセルを取得します
文字列学生名 = cell.getStringCellValue();
students.add(新しい学生(学生名));
}
} キャッチ (IOException e) {
e.printStackTrace();
}
帰国生。
}
このメソッドは、まず指定された Excel ファイルを開き、次に最初のシートの各行を読み取ります。各行について、最初の列のセルを取得し、そこから学生の名前を取得します。次に、この生徒名を生徒リストに追加します。ファイルの読み取り中またはデータの処理中にエラーが発生した場合、エラー スタック トレースが出力されます。
3. 例外処理
ファイルやデータを処理するときに、さまざまなエラーが発生する可能性があります。たとえば、ファイルが存在しないか、ファイルが Excel ファイルではない可能性があります。また、セルには予期したデータが含まれていない可能性があります。このようなケースに対処するには、エラー チェックおよび処理コードをさらに追加する必要があります。例えば:
- ファイルが存在するかどうかを確認する: ファイルを開く前に、ファイルが存在するかどうかを確認できます。ファイルが存在しない場合は、例外をスローするか、エラー メッセージを返すことができます。
- ファイルが Excel ファイルかどうかを確認する: ファイルを開く前に、ファイルの数バイトを読み取って、それらが Excel ファイルの署名 (POI ライブラリの「Poi」など) であるかどうかを確認できます。そうでない場合は、例外をスローするか、エラー メッセージを返すことができます。
- セルのデータ型を確認します。セルに文字列が含まれていない場合、getStringCellValue メソッドは RuntimeException をスローします。getCellType メソッドを使用してセルのデータ型を確認し、必要に応じてデータを操作できます。
4. 空の行を処理する: シートに空の行がある場合、rowIterator.hasNext() は false を返し、データの処理を停止します。各行にデータが含まれていることを確認するチェックを追加できます。
4. FuncGPT(知恵機能)の実践操作
カスタマイズされたデータ処理要件のシナリオが異なると、詳細が微妙に異なる場合があります。上記のチュートリアルに従って最初から作成するのは非常に面倒です。現時点では、開発者は一般的な要件について考え、FuncGPT (ウィット関数) を尋ねることができます。 Apacheを使用 POIライブラリはExcelファイルの読み込みを高速に実現します。
要件を入力します:
EXCELデータを読み込み、入力パラメータ:ファイルファイル、出力パラメータ:List<Map<String, Object>>
「コードの生成」をクリックして完全なコードを取得します。
// クラス名: ExcelDataReader
// 関数名: readExcelData
// Function 関数: Excel データを読み取り、List<Map<String, Object>> 型の結果を返します。
// POM 依存関係パッケージ:
// <依存関係>
// <groupId>org.apache.poi</groupId>
// <artifactId>ポイ</artifactId>
// <バージョン>4.1.2</バージョン>
// </依存関係>
// <依存関係>
// <groupId>org.apache.poi</groupId>
// <artifactId>poi-ooxml</artifactId>
// <バージョン>4.1.2</バージョン>
// </依存関係>
org.apache.poi.ss.usermodel.* をインポートします。
java.io.ファイルをインポートします。
java.io.FileInputStreamをインポートします。
インポート java.io.IOException;
java.util.ArrayListをインポートします。
java.util.HashMapをインポートします。
java.util.Listをインポートします。
java.util.Mapをインポートします。
パブリック クラス ExcelDataReader {
/**
* Excel データを読み取り、List<Map<String, Object>> 型の結果を返します。
* @paramファイル Excel ファイル
* @return List<Map<String, Object>> Excelデータの結果
* @throws IOException Excel ファイルの読み取りエラーが発生した場合に IOException をスローします
*/
public static List<Map<String, Object>> readExcelData(File file) throws IOException {
List<Map<String, Object>> dataList = new ArrayList<>(); // Excel データを保存するリストを作成します
FileInputStream fis = new FileInputStream(file); // ファイル入力ストリームを作成します
Workbook workbook = WorkbookFactory.create(fis); // Workbook オブジェクトを作成します
Sheet Sheet = workbook.getSheetAt(0); // 最初のシートを取得します
int rowCount =sheet.getLastRowNum(); // 行数を取得
Row headerRow =sheet.getRow(0); // ヘッダー行を取得します
int columnCount = headerRow.getLastCellNum(); // 列数を取得する
for (int i = 1; i <= rowCount; i++) { // 各行をループします (ヘッダー行をスキップします)
行行 =sheet.getRow(i);
Map<String, Object> rowData = new HashMap<>();
for (int j = 0; j < columnCount; j++) { // 各列を走査します
セルセル = row.getCell(j);
String columnName = headerRow.getCell(j).getStringCellValue(); // 列名を取得
オブジェクトのセル値;
switch (cell.getCellType()) { // セルの種類に応じてセルの値を取得します
ケース文字列:
cellValue = cell.getStringCellValue();
壊す;
数字の場合:
cellValue = cell.getNumericCellValue();
壊す;
ブール値の場合:
cellValue = cell.getBooleanCellValue();
壊す;
場合の式:
cellValue = cell.getCellFormula();
壊す;
デフォルト:
セル値 = null;
}
rowData.put(columnName, cellValue); // 列名とセル値を rowData に格納します
}
dataList.add(rowData); // rowDataをdataListに格納します
}
workbook.close(); // Workbook オブジェクトを閉じる
fis.close(); // ファイル入力ストリームを閉じる
return dataList; // Excelデータの結果を返す
}
}
// 関数の例
// Excelデータの読み込み例
// 入力パラメータ: ファイル、Excel ファイル
// 出力パラメータ: dataList, List<Map<String, Object>> Excel データの結果
// 呼び出し例:
// ファイル file = new File("data.xlsx");
// List<Map<String, Object>> dataList = ExcelDataReader.readExcelData(file);
// System.out.println(dataList);
// 出力結果: たとえば、Excel データは次のようになります。
// | 名前 | 年齢 | グレード |
// |------|-----|------|
// | アリス | 18 | あ |
// | ボブ | 20 | B |
// 出力結果は次のようになります: [{Name=Alice, Age=18, Grade=A}, {Name=Bob, Age=20, Grade=B}]
// Excel データが List<Map<String, Object>> の形式でカプセル化されていることを示します
FuncGPT (知恵関数) は、オンラインの「有名な先生」のようなもので、明確で理解しやすく、読みやすさに優れ、ニーズに応じて比較的正確な「解決策」を短時間で、または準備ができている状態で提供します。使用するコード。特定の需要シナリオでは、開発者は実際のニーズに応じて FuncGPT (Hui Function) によって生成されたコードを変更できます。
たとえば、EXCEL の全体的な形式コンテンツは有効な行または列の実データの読み取りに影響を与えるため、行と列に対して関連する有効チェックを実行する必要があります。元のコードに基づいて、次の変更を加えることができます。
1) 列の実際の長さが行の読み取りに影響するため、最初に列を判断します。
2) 最初の行のヘッダーを読み取り、空白の列が見つかった場合、有効な列は前の列の添え字とみなされます。
3) 有効な列を取得した後、各行のデータを反復処理し、行全体が空の場合はループから抜け出してデータ取得を終了します。
FuncGPT (wit function) が無料で公開されました。ダウンロードリンク: https://suo.im/a2pXi
V. まとめ
上記のコードと説明を通じて、Java および Apache POI ライブラリを使用して Excel ファイルを読み取る方法を理解しました。これは、学生情報管理システムなどのアプリケーションを開発する場合に非常に重要です。同時に、考えられる例外を適切に処理することも、開発プロセスの不可欠な部分です。この記事があなたのプロジェクトの実現に役立つことを願っています。
Microsoft の公式発表: Visual Studio for Mac が廃止 中国の開発者チームによって作成されたプログラミング言語: MoonBit (月のウサギ) C++ の父、Bjarne Stroustrup が人生のアドバイスを共有 Linus も乱雑な略語を嫌い、TM は「GenPD」と呼ばれるもの Rust 1.72 .0 リリース、将来的にサポートされる最小バージョンは Windows 10 ウェンシン・イーヤン、 WordPress を 全社会に開放し「100 年計画」を開始 : Crumb green language V1.0 正式リリース