POIインプリメンテーションはExcelファイルにインポートされます

2496 ワード

問題の説明
データを一括インポートする必要があり、データはExcel形式でインポートされます.
POI紹介
私が選んだのはapache POIです.これはApache オープンの関数ライブラリで、officeファイルを読み書きできるようにAPIをjavaに提供します.
ここではその中のExcel部分を使うだけです.
インプリメンテーション
まず、Excelには2つのフォーマットがあり、1つは.xls(03 )であり、もう1つは.xlsx(07 )である.POIは、2つの異なる表形式に対応して2つのインタフェースを提供する.HSSFWorkbookおよびXSSFWorkbook依存のインポート

    org.apache.poi
    poi
    RELEASE


    org.apache.poi
    poi-ooxml
    RELEASE

バージョンの処理
Workbook workbook = null;
try {
    if (file.getPath().endsWith("xls")) {
        System.out.println("  2003  ");
        workbook = new XSSFWorkbook(new FileInputStream(file));
    } else if (file.getPath().endsWith("xlsx")){
        workbook = new HSSFWorkbook(new FileInputStream(file));
        System.out.println("  2007  ");
    }
            
} catch (IOException e) {
    e.printStackTrace();
}

ここではExcel を判断し,拡張子に応じて異なるクラスでファイルを処理する必要がある.
テーブルデータの取得
テーブルのデータを取得するには、次の手順に従います.
1.テーブルの取得
2.ローの取得
3.この行のセルを取得
コード実装:
//        
Sheet sheet = workbook.getSheetAt(0);
      
//         
for (int i = 0; i <= sheet.getLastRowNum(); i++) {
    Row row = sheet.getRow(i);    //    

    //         
    String studentNum = row.getCell(0).getStringCellValue();   
    String name = row.getCell(1).getStringCellValue();
    String phone = row.getCell(2).getStringCellValue();
}

永続化
セル内のデータを取得すると、最後にデータでオブジェクトを作成します.
List studentList = new ArrayList<>();

for (int i = 0; i <= sheet.getLastRowNum(); i++) {
    Row row = sheet.getRow(i);    //    

    //         
    String studentNum = row.getCell(0).getStringCellValue();   
    String name = row.getCell(1).getStringCellValue();
    String phone = row.getCell(2).getStringCellValue();
    
    Student student = new Student();
    student.setStudentNumber(studentNum);
    student.setName(name);
    student.setPhoneNumber(phone);
    
    studentList.add(student);
}

//    
studentRepository.saveAll(studentList);

関連リファレンス:https://poi.apache.org/compon...https://blog.csdn.net/daihuim...