はじめに:
一般的なバックグラウンドレポートクエリーページでは、Excelのテーブルにデータをエクスポートする機能があるでしょう
本体:
JS:
window.open(「バックエンドインターフェイスアドレス」)。
コントローラ層:
@ApiOperation(値= "导出列表" ) @RequestMapping(値 = "エクセル/ exportExcel"、メソッド= RequestMethod.GET) 公共 ボイドexportExcel(HttpServletResponseの応答、QueryVoクエリ){ この.theService.exportCsvPointList(応答、クエリー)。 }
サービス層:
@Override 公共 のボイドexportCsvPointList(HttpServletResponseの応答、QueryVoクエリ){ 文字列のタイトル =「不可欠な録音」; 文字列fileNameに = +タイトル「.CSV」; // クエリのクエリに対応するクエリデータ <エンティティ>リスト一覧を、 のLinkedHashMap <文字列、文字列> =のheadMap、新しい新規のLinkedHashMap <> (); headMap.put(「電話」、「電話番号」); // 電話エンティティのフィールド名、ヘッダ名の電話番号が優れテーブル headMap.put ( "名前"、 "名前" ); ExportCsvUtil.exportCSV(タイトル、ファイル名、リスト、のheadMap ,,応答); }
ツール:
ExportCsvUtil
パッケージcom.bf.base.utils。 輸入com.alibaba.fastjson.JSONArray; 輸入com.alibaba.fastjson.JSONObject。 インポートのjavax.servlet.ServletOutputStream。 インポートのjavax.servlet.http.HttpServletResponse; 輸入java.io.BufferedWriter。 インポートにjava.io.IOException; 輸入java.io.OutputStreamWriterが、 輸入java.net.URLEncoder。 輸入はjava.util.ArrayList; 輸入java.util.LinkedHashMap。 輸入はjava.util.List; 輸入java.util.Map.Entry。 / ** *下载CSV文件 * / パブリック クラス{ExportCsvUtil / ** * @paramの応答返さボディ * @paramの一覧データセット * @paramのタイトルメインタイトル * @param マップオブジェクト字幕属性の * @paramのfileNameにファイル名 * / パブリック 静的 <T> のボイド exportCSV(タイトル文字列,,文字ファイル名、リスト<T>リスト、のLinkedHashMap <文字列、文字列> マップ、HttpServletResponseの応答){ JSONArray配列 = 新しい新しいJSONArray(); のための(TのOBJ:リスト){ array.add(OBJ); } / /表格头 一覧<文字列> headList = 新しい ArrayListを<> (); 用(エントリ<文字列、文字列> エントリ:map.entrySet()){ headList.add(entry.getValue())。 } // 数据 BufferedWriterのcsvWtriter = NULL ; 試す{ リスト <リスト<文字列>> DataListコントロール= 新しいのArrayList <リスト<文字列>> (); 用{(配列オブジェクトobj) リストの<string> rowList = 新規のArrayList <> (); JSONObject城 =(JSONObject)JSONObject.toJSON(OBJ)。 用(エントリ<文字列、文字列> エントリ:map.entrySet()){ String値 = entry.getValue()。 文字列キー = entry.getKey()。 文字列joValue = jo.get(キー)== nullの?"" :jo.get(キー).toString(); rowList.add(joValue)。 } dataList.add(rowList)。 } // 文件下载、使用如下代码 response.setContentType( "アプリケーション/ CSV;のcharset = GB18030" )。 response.setHeader("コンテンツ配置"、 "添付ファイル;ファイル名=" + URLEncoder.encode(ファイル名、 "UTF-8" )); ServletOutputStreamをアウト = response.getOutputStream()。 csvWtriter = 新しい BufferedWriterの(新しいのOutputStreamWriter(うち、 "GB18030")、1024年); / * INT NUM = headList.size()/ 2。 StringBufferのバッファ=新しいStringBufferの(); {(; I <NUM iは++ iが0 = INT)のため buffer.append( "")。 } csvWtriter.write(buffer.toString()+タイトル+ buffer.toString())。 csvWtriter.newLine(); writerow(headList、csvWtriter)。 // 写入文件内容 のための(リストの<string> 行:データリスト){ のwriterow(行、csvWtriter)。 } csvWtriter.flush()。 csvWtriter.close(); } キャッチ(例外e){ e.printStackTrace(); } 最後に{ 試みる{ )(csvWtriter.closeします。 } キャッチ(IOExceptionを電子){ e.printStackTrace(); } } } / ** *写一行数据 * @param行数据列表 * @param csvWriter * @throws のIOException * / プライベート 静的 ボイドのwriterow(リスト<文字列>行、BufferedWriterのcsvWriter)がスローIOExceptionが{ ため(文字列データ:行){ StringBufferのSB = 新規のStringBuffer(); ストリングrowStr = sb.append( "\" ")(データ)付加.append(" \ "" ).toString(); csvWriter.write(rowStr)。 } csvWriter.newLine()。 } }