例外が発生した場合、一般的に、我々は輸出エクセル実現を直接リダイレクトまたはフォームの送信フォームが、背景され、メッセージはここで別の実装、POSTリクエストを使用することをお勧めします、非常にフレンドリーで、テキストの形で新しいウィンドウに表示され、カスタムエラーメッセージを渡すことができます。
ブロブを設定するためのフロントエンドaxios、responseType
それを聞かせ=この
せのparams = { activitiesId:activitiesId、 のstartTime:のstartTime、 endTimeは:endTimeは } axios({ メソッド:' ポスト' 、 URL:' / activityManage / exportExcel ' 、 データ:paramsは、 responseType:' ブロブ' })。次いで、(RESP => { that.downloadFile(それぞれ、その) })。キャッチ(RESP => { こと。$のnotify.error(resp.msg|| ' エクスポート失敗しました' ) )}
新しいリンクを開き、[ダウンロード]ボタンを配置し、自動的にクリックするメソッドの実装をダウンロードしてください:
downloadFile(RESPは、それは){ データましょう = resp.data // ここヘッダから取得したカスタムプロンプトプロンプト IF(resp.headers [ 'ERRORMSG'] ||!データ){ (つまり。$のnotify.errorをdecodeURI(resp.headers [ 'ERRORMSG'])|| 'エクスポートが失敗した' ) のリターン } のlet URL = window.URL.createObjectURL(新新ブロブ([データ])) しましょうリンク =のdocument.createElement( 'A' ) のリンク。 。style.display = 'なし' link.href = URL // ファイル名が後端に設けられている link.setAttribute( 'ダウンロード'、decodeURI( resp.headers [ 'ファイル名'])) document.body.appendChild(リンク) link.click() }、
背景情報の設定は、ファイル名のファイル:
トライ{ HSSFWorkbook HSSFWorkbook = 新しい新しいHSSFWorkbook() 文字列errorMsg内容 = NULL ; / * * *データのカプセル化法は、その、ここでは無視優れ、カスタマイズ百度POI *はヘッダに最後に、カスタム・エラー・メッセージ、および必要 * = errorMsg内容"輸出例外:活性「は存在しません * / 文字列fileNameに Excelのエクスポートデータ=の」「; // 空の応答 response.reset(); //は、ヘッダーの応答を設定 Response.Addheader(」コンテンツ・処分「」添付ファイル;ファイル名= " URLEncoder.encode +(ファイル名、 "UTF-8" )); // メッセージ response.setHeader( "errorMsg内容"、URLEncoder.encode(errorMsg内容、 "UTF-8" )); response.setHeader( "ファイル名"、URLEncoder.encode(ファイル名、 "UTF-8" )); response.setContentType( "アプリケーション/ vnd.ms-エクセル;のcharset = 2312" )。 OutputStreamのOS = 新なBufferedOutputStream(response.getOutputStream()); hssfWorkbook.write(OS)。 hssfWorkbook.close(); os.flush(); os.close(); } キャッチ(例外e){ log.error( "导出分析数据异常:" + E)。 スロー 新しいのRuntimeException(e)を、