パブリック クラスExcelUtils { プライベート 静的 最終ロガーロガー= LoggerFactory.getLogger(ExcelUtils。クラス); プライベート 静的リスト<リストの<Object >> lineList = 新しい新しいのArrayList <> (); / ** * Excelエクスポートツール * * @paramの応答 * @param fileNameにファイル名 * @param オブジェクトのプロジェクトコレクション * @paramの列名のCOLUMNNAMESがでExcelをエクスポート * @paramのフィールド名オブジェクトにキーが対応 * @throws IOExceptionが * / 公共の 静的な 無効のエクスポート(<?> HttpServletResponseの応答、文字列のファイル名、リストプロジェクト、String []型COLUMNNAMESは、文字列は、[]キー)例外{IOExceptionが ExcelWriter bigWriter = ExcelUtil.getBigWriter(); のため(int型 I = 0; I < columnNames.length; I ++ ){ bigWriter.addHeaderAlias(COLUMNNAMES [I]、キー[I]); bigWriter.setColumnWidth(I、 20である); } // 使い捨て書き込みに、デフォルトのスタイル、強制出力ヘッダ bigWriter.write (プロジェクト、真の); // HttpServletResponseのオブジェクトへの対応 response.setContentType(「アプリケーション/ vnd.ms-エクセル;のcharset = UTF-8」); // Test.xlsをは、ファイル名をダウンロードするには、ポップアップダイアログボックスで中国人することはできません、中国は独自のコーディング作る 「(のContentをresponse.setHeaderを処分""添付ファイル;ファイル名= "+ 新新しい文字列((fileNameに+"の.xlsx ")GetBytesメソッド(),." ISO-8859-1 " )); ServletOutputStreamをOUT = response.getOutputStream(); bigWriter.flush(OUT 、真の); // 閉じる作家、メモリの解放 bigWriter.close(); // 出力ストリームをオフにすることを忘れないでくださいサーブレットここ IoUtil.close(OUT); } / ** * Excelのインポートツール * * @paramファイルのファイル * @paramの列columNamesに対応するフィールド名 * @return 戻りデータセットを * @throws OperationException * @throws IOExceptionが * / パブリック 静的リスト<地図<文字列、オブジェクト>>(MultipartFileファイル、String []型columNames)をリードするスローOperationExceptionをIOException { 文字列fileNameに = file.getOriginalFilename(); // アップロードされたファイルは、空の IF (StringUtils.isEmpty(fileNameに)){ スロー 新しい新 OperationException(ReturnCodeEnum.OPERATION_EXCEL_ERROR、 "なしインポートファイル"); } // アップロードファイルのサイズ1000のデータに IF(* 1024 file.getSize()> 1024 * 10 ){ logger.error( "アップロード|アップロードに失敗しました:{:ファイルサイズは10M、ファイルサイズ超え}" 、ファイルを。 getSize()); スロー 新しい新 OperationException(ReturnCodeEnum.OPERATION_EXCEL_ERRORは、 "アップロードはファイルサイズが10Mを超えることはできません:!失敗" ;) } // アップロードファイル名の形式を IF!= -1 &&(fileName.lastIndexOfを( "") !。 "XLSX" .equals(fileName.substring(fileName.lastIndexOf( "" )))){ スロー 新しい新 OperationException(ReturnCodeEnum.OPERATION_EXCEL_ERRORは、 "ファイル名の形式が正しくない、ファイル名の接尾辞.XLSXを使用してください" ) ; } // データを読み込みます ExcelUtil.read07BySax(file.getInputStream()、0 、createRowHandler())。 // 去除エクセル中的第一行数据 lineList.remove(0 )。 // 将数据封装到リスト<地図>中 一覧<地図<文字列、オブジェクト>> DataListコントロール= 新しい ArrayListを<> (); 以下のために(int型私= 0;私<lineList.size(); I ++ ){ 場合(ヌル =!lineList.get(I)){ 地図 <文字列、オブジェクト>ハッシュマップ= 新しい HashMapの<> (); 用(INT J = 0; J <columNames.length; J ++ ){ プロパティオブジェクト = lineList.get(I)に.get(J); hashMap.put(columNames [J]、プロパティ); } dataList.add(ハッシュマップ「); } 他{ BREAK ; } } 戻りデータリスト; } / ** *我々は、メソッドハンドルを実装することで、データの各行のための動作を記述する必要があり * / プライベート 静的RowHandler createRowHandler(){ // データ収集で空 lineList.removeAll(lineList); リターン 新しい新RowHandler(){ @Override 公共 ボイドハンドル(INT sheetIndex、INT rowIndexに、リストrowlist){ // 設定するリストの各行にリードデータ = JSONArray jsonObjectを新しい新規JSONArray(rowlist) 。lineList.add(jsonObject.toList(オブジェクト・クラス)); } }; } }
簡単なツールを使用してHutoolは、インポートおよびエクスポートツールをエクセル
おすすめ
転載: www.cnblogs.com/qingmuchuanqi48/p/12128411.html
おすすめ
ランキング