1. POMファイルの導入(エラー防止が各ジャーパッケージの同じバージョンのまま)
< 依存性> < のgroupId > org.apache.poi </ のgroupId > < たartifactId > POI-OOXML </ たartifactId > < バージョン> 3.17 </ バージョン> </ 依存> < 依存性> < のgroupId > org.apache.poi </ groupId > < たartifactId > POI-OOXML-スキーマ</ たartifactId > < バージョン>3.17 </バージョン> </ 依存> < 依存性> < のgroupId > org.apache.poi </ のgroupId > < たartifactId > POI </ たartifactId > < バージョン> 3.17 </ バージョン> </ 依存>
2.ファイルのインポートツール
パッケージcom.yami.shop.admin.config。 輸入org.apache.poi.hssf.usermodel.HSSFWorkbook; 輸入 org.apache.poi.ss.usermodel *。; 輸入org.apache.poi.xssf.usermodel.XSSFWorkbook; 輸入java.io.InputStreamを。 輸入はjava.util.ArrayList; 輸入java.util.HashMapを; 輸入はjava.util.List; 輸入java.util.Map; パブリック クラスImportExcel { // abc.xls パブリック 静的 ブールisXls(文字列fileNameに){ // (?I)忽略大小写 場合(fileName.matches( "^。+ \\。(?I)(XLS)$")){ 戻り trueに; } 他の IF(fileName.matches(。 "^ \\ +(I。?)(XLSX)$" )){ リターン falseに; } 他{ スロー 新しい新しいのAのRuntimeException( "間違ったフォーマット" ); } } パブリック 静的リスト<地図<文字列オブジェクト>> readExcel(文字列のファイル名、InputStream InputStreamは)がスロー例外{ ブール RET = isXls(ファイル名); ブックブック = NULL ; // サフィックスに応じて異なるオブジェクトを作成する 場合(RET){ ブック = 新しいHSSFWorkbook(のinputStream)。 } 他{ ブック = 新しいXSSFWorkbook(のinputStream)。 } シートシート = workbook.getSheetAt(0 )。 // 得到标题行 行titleRow = sheet.getRow(0 )。 INT lastRowNum = sheet.getLastRowNum()。 INT lastCellNum = titleRow.getLastCellNum()。 一覧 <地図<文字列、オブジェクト>>一覧= 新しい ArrayListを<> (); 以下のための(int型私は1を=。I <= lastRowNum。I ++ ){ マップの<string、オブジェクト>マップ= 新しい HashMapの<> (); 行の行は = sheet.getRow(i)を、 用(INT J = 0; J <lastCellNum; J ++ ){ // 得到列名 文字列キー= titleRow.getCell(J).getStringCellValue(); 電池セルは = row.getCell(j)を、 cell.setCellType(CellType.STRING)。 map.put(キー、cell.getStringCellValue()); } list.add(マップ) } )(workbook.close。 戻り値のリスト。 } }
3.controller制御層
パッケージcom.yami.shop.admin.controller。 輸入com.fasterxml.jackson.core.type.TypeReference。 輸入com.fasterxml.jackson.databind.ObjectMapper; 輸入com.yami.shop.admin.config.ImportExcel; 輸入com.yami.shop.bean.model.TzJobSet; 輸入com.yami.shop.common.bean.Result; 輸入com.yami.shop.service.ITzJobSetService。 輸入org.springframework.beans.factory.annotation.Autowired; 輸入org.springframework.transaction.annotation.Transactional; 輸入org.springframework.web.bind.annotation.PostMapping。 輸入org.springframework.web.bind.annotation.RequestMapping。 輸入org.springframework.web.bind.annotation.RequestParam; 輸入org.springframework.web.bind.annotation.RestController。 輸入org.springframework.web.multipart.MultipartFile; 輸入java.io.InputStreamを。 輸入はjava.util.List; 輸入java.util.Map; @RestController @RequestMapping( "/管理者/スタッフ" ) のパブリック クラスTestExcel { @Autowired プライベートITzJobSetService tzJobSetService。 (@PostMapping "/インポート" ) @Transactional 公共{ブールimportExcel(@RequestParam MultipartFile MFILE) 結果結果 = 新しいです結果は、(); 試み{ 文字列fileNameに = mFile.getOriginalFilenameは(); // 入力ストリームファイルがアップロード取得 InputStream InputStreamは= mFile.getInputStreamは(); // ツールメソッド呼び出しを、Excelファイルからデータを読み込みます リスト<地図<文字列、オブジェクト>> sourceListの= ImportExcel.readExcel(ファイル名を値、INPUTSTREAM); // オブジェクトのJSON形式の文字列最初に、次にリスト<TzJobSet>オブジェクトTzJobSetに変換:表対応するエンティティクラス ObjectMapper objMapper = 新しい新しいObjectMapper(); 文字列に関する情報 = objMapper.writeValueAsString(sourceListの); //JSON文字列の転送は、オブジェクト リスト<TzJobSet>一覧= objMapper.readValue(に関する情報、新しい新しい typereference <リスト<TzJobSet >> (){}); // saveBatchアドインバルクでバッチ添加方法MyBatisの-ピオフレームプロジェクトmybatis-ありますピウスが来る ブール B = tzJobSetService.saveBatch(一覧); リターンB; } キャッチ(例外E){ // TODO自動生成されたブロックキャッチ e.printStackTrace(); } リターン falseに; } }