簡単なツールを使用してHutoolは、インポートおよびエクスポートツールをエクセル

パブリック クラス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(オブジェクト・クラス)); 
            } 
        }; 
    } 
}

おすすめ

転載: www.cnblogs.com/qingmuchuanqi48/p/12128411.html