[Javaの] [47]のデータのエクスポートExcelへ

はじめに:

一般的なバックグラウンドレポートクエリーページでは、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()。
    } 
}

 

おすすめ

転載: www.cnblogs.com/huashengweilong/p/11363547.html