JavaエクスポートCSVファイル

4287 ワード

JavaエクスポートCSVファイル
  • Javaを使用してCSV形式ファイルをエクスポート
  • CSV
  • とは
  • CSVフォーマットの特徴
  • エクスポート実装
  • Javaを使用したCSV形式ファイルのエクスポート
    CSVのエクスポート方法を整理して、必要な友达を助けることができることを望みます
    CSVとは
    CSVは、表データ(数値とテキスト)を純粋なテキスト形式で格納する汎用的で比較的簡単なファイルフォーマットです.
      ,  ,  ,  0,  0,  1,  1,  2,  2,
      ,name,random,null,18993897778,13,18993897709,13,null,null,
     2,name2,random,null,18993897776,13,18993897775,13,null,null,
    

    CSV形式の特徴
    CSVは純粋なテキストのファイルであるため、以下のいくつかの特徴がある.
  • は追加モード書き込みをサポートし、メモリを節約します.
  • CSVのファイル行数に制限はありません.
  • CSVは純粋なテキストファイルであり、任意のテキストエディタを使用して編集できます.

  • インプリメンテーションのエクスポート
    ツールクラス
    public class CsvExportUtil {
    
        /**
         * CSV      
         */
        private static final String CSV_COLUMN_SEPARATOR = ",";
    
        /**
         * CSV      
         */
        private static final String CSV_ROW_SEPARATOR = "\r
    "; /** * @param dataList * @param titles * @param keys * @param os */ public static void doExport(List> dataList, String titles, String keys, OutputStream os) throws Exception { // StringBuffer buf = new StringBuffer(); String[] titleArr = null; String[] keyArr = null; titleArr = titles.split(","); keyArr = keys.split(","); // for (String title : titleArr) { buf.append(title).append(CSV_COLUMN_SEPARATOR); } buf.append(CSV_ROW_SEPARATOR); // if (CollectionUtils.isNotEmpty(dataList)) { for (Map data : dataList) { for (String key : keyArr) { buf.append(data.get(key)).append(CSV_COLUMN_SEPARATOR); } buf.append(CSV_ROW_SEPARATOR); } } // os.write(buf.toString().getBytes("GBK")); os.flush(); } /** * Header * * @param fileName * @param response * @throws UnsupportedEncodingException */ public static void responseSetProperties(String fileName, HttpServletResponse response) throws UnsupportedEncodingException { // SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); String fn = fileName + sdf.format(new Date()) + ".csv"; // String utf = "UTF-8"; // response.setContentType("application/ms-txt.numberformat:@"); response.setCharacterEncoding(utf); response.setHeader("Pragma", "public"); response.setHeader("Cache-Control", "max-age=30"); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fn, utf)); } }

    Controller
    @GetMapping("/export")
    public R export(HttpServletResponse response) {
    
            //          
            List dataList = DataApi.listAll();
    
            if (CollectionUtils.isEmpty(dataList)) {
                return new R(HttpStatus.OK, "     ");
            }
    
            //         
            String titles = "  ,  ,  ";  //     
            String keys = "no,name,time";  //       
            
            //       
            List> datas = new ArrayList<>();
            Map map = null;
            for (Data data : dataList) {
                map = new HashMap<>();
                map.put("no", data.getNo());
                map.put("name", data.getName());
                map.put("time", data.getTime());
                datas.add(map);
            }
    
            //         
            String fName = "data_";
    
            //     
            try {
                OutputStream os = response.getOutputStream();
                CsvExportUtil.responseSetProperties(fName, response);
                CsvExportUtil.doExport(dataList, titles, keys, os);
                os.close();
            } catch (Exception e) {
                logger.error("    ", e.getMessage());
                return new R(HttpStatus.BAD_REQUEST, "    ");
            }
            return new R(HttpStatus.OK);
        }