`

Java 导出 CSV(转)

 
阅读更多
package com.cib.cap4j.cfn.util;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.List;

/**
 * 
 * CSV文件导出工具类
 * 
 * Created on 2014-08-07
 * @author 
 * @reviewer 
 */
public class CSVUtils {

    /**
     * CSV文件生成方法
     * @param head
     * @param dataList
     * @param outPutPath
     * @param filename
     * @return
     */
    public static File createCSVFile(List<Object> head, List<List<Object>> dataList,
            String outPutPath, String filename) {

        File csvFile = null;
        BufferedWriter csvWtriter = null;
        try {
            csvFile = new File(outPutPath + File.separator + filename + ".csv");
            File parent = csvFile.getParentFile();
            if (parent != null && !parent.exists()) {
                parent.mkdirs();
            }
            csvFile.createNewFile();

            // GB2312使正确读取分隔符","
            csvWtriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(
                    csvFile), "GB2312"), 1024);
            // 写入文件头部
            writeRow(head, csvWtriter);

            // 写入文件内容
            for (List<Object> row : dataList) {
                writeRow(row, csvWtriter);
            }
            csvWtriter.flush();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                csvWtriter.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return csvFile;
    }

    /**
     * 写一行数据方法
     * @param row
     * @param csvWriter
     * @throws IOException
     */
    private static void writeRow(List<Object> row, BufferedWriter csvWriter) throws IOException {
        // 写入文件头部
        for (Object data : row) {
            StringBuffer sb = new StringBuffer();
            String rowStr = sb.append("\"").append(data).append("\",").toString();
            csvWriter.write(rowStr);
        }
        csvWriter.newLine();
    }
}

 

// Excel导出
        function exportExcel(e) {
            // csv导出
            var params = "";
            params += "khxm=" + $J.getbyName("khxm").getValue();
            params += "&zjlx=" + $J.getbyName("zjlx").getValue();
            params += "&zjhm=" + $J.getbyName("zjhm").getValue();
            params += "&sjhm=" + $J.getbyName("sjhm").getValue();
            params += "&khlx=" + $J.getbyName("khlx").getValue();
            params += "&fxdj=" + $J.getbyName("fxdj").getValue();
            params += "&zhdh=" + $J.getbyName("zhdh").getValue();
            params += "&lczh=" + $J.getbyName("lczh").getValue();
            params += "&gsjg=" + $J.getbyName("gsjg").getValue();
            params += "&gsjl=" + $J.getbyName("gsjl").getValue();
            params += "&gszk=" + $J.getbyName("gszk").getValue();
            params += "&yxbl=" + $J.getbyName("yxbl").getValue();
            window.location = "<%= request.getContextPath() %>/khxxCx/exportExcel.do?" + params;
        }

 

public @ResponseBody void exportExcel(HttpServletRequest request, HttpServletResponse response, KhxxCxVO vo) throws IOException{
        File csvFile = createCSVFile(request,vo);

        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;

        response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode(csvFile.getName(), "UTF-8"));

        response.setHeader("Content-Length", String.valueOf(csvFile.length()));

        bis = new BufferedInputStream(new FileInputStream(csvFile));
        bos = new BufferedOutputStream(response.getOutputStream());
        byte[] buff = new byte[2048];
        while (true) {
          int bytesRead;
          if (-1 == (bytesRead = bis.read(buff, 0, buff.length))) break;
          bos.write(buff, 0, bytesRead);
        }
        bis.close();
        bos.close();
    }
    
    
    public File createCSVFile(HttpServletRequest request,KhxxCxVO vo){
            
            vo.setKhxm(StringUtil.formatDbLikeValue(vo.getKhxm()));
            
            String yybh = ContextUtil.getLoginUser().getUserId();
            String cur_ssjg = ContextUtil.getLoginUser().getUserUnit();
            String unitPath = ContextUtil.getLoginUser().getUnitPath();
            
            IPStaffVO staff = ipStaffService.findStaffByKey(yybh);
            
            String yhlx = staff.getYhlx();
            
            if((!cur_ssjg.equals(unitPath)) && yhlx.equals("2")){
                vo.setCur_path(StringUtil.formatDbLeftLikeValue(unitPath.trim()));
            }else if(yhlx.equals("1")){
                vo.setCur_ssjg(cur_ssjg.trim());
            }
            
            // 设置表格头
            Object[] head = {"客户姓名", "证件类型", "证件号码", "银行账号", "理财账号", "客户类型", "风险等级", "归属状况", "归属机构", "客户经理", "营销比例(%)" };
            List<Object> headList = Arrays.asList(head);
            
            List<KhxxCxVO> list = iKhxxCxService.findAllInfos(vo, Integer.MAX_VALUE, 0);
            
            // 码表取出证件类型
            Map<String, String> zjlx_map = new HashMap<String, String>();
            List<IPCodeInfoVO> zjlx_list = directoryService.findInfoListByTypeCode("zjlx", null);
             if ((zjlx_list != null) && (zjlx_list.size() > 0)){
                  for (Iterator i$ = zjlx_list.iterator(); i$.hasNext(); ) { 
                    IPCodeInfoVO ipci_vo = (IPCodeInfoVO)i$.next();
                    zjlx_map.put(ipci_vo.getMblxbh(), ipci_vo.getMbtmz());
                  }
             }
            Map<String, String> khlx_map = new HashMap<String, String>();
            List<IPCodeInfoVO> khlx_list = directoryService.findInfoListByTypeCode("khlx", null);
            if ((khlx_list != null) && (khlx_list.size() > 0)){
                  for (Iterator i$ = khlx_list.iterator(); i$.hasNext(); ) { 
                    IPCodeInfoVO ipci_vo = (IPCodeInfoVO)i$.next();
                    khlx_map.put(ipci_vo.getMblxbh(), ipci_vo.getMbtmz());
                  }
             }
            Map<String, String> fxdj_map = new HashMap<String, String>();
            List<IPCodeInfoVO> fxdj_list = directoryService.findInfoListByTypeCode("fxdj", null);
            if ((fxdj_list != null) && (fxdj_list.size() > 0)){
                  for (Iterator i$ = fxdj_list.iterator(); i$.hasNext(); ) { 
                    IPCodeInfoVO ipci_vo = (IPCodeInfoVO)i$.next();
                    fxdj_map.put(ipci_vo.getMblxbh(), ipci_vo.getMbtmz());
                  }
             }
            Map<String, String> gszk_map = new HashMap<String, String>();
            List<IPCodeInfoVO> gszk_list = directoryService.findInfoListByTypeCode("gszk", null);
            if ((gszk_list != null) && (gszk_list.size() > 0)){
                  for (Iterator i$ = gszk_list.iterator(); i$.hasNext(); ) { 
                    IPCodeInfoVO ipci_vo = (IPCodeInfoVO)i$.next();
                    gszk_map.put(ipci_vo.getMblxbh(), ipci_vo.getMbtmz());
                  }
             }
            // 设置数据
            List<List<Object>> dataList = new ArrayList<List<Object>>();
            List<Object> rowList = null;
            for (int i = 0; i < list.size(); i++) {
                rowList = new ArrayList<Object>();
                KhxxCxVO kc_vo = list.get(i);
                //rowList.add(i + 1);
                rowList.add(kc_vo.getKhxm());
                rowList.add(StringUtil.nullToSpace(zjlx_map.get(kc_vo.getZjlx().trim())));
                
//                String zjhm= kc_vo.getZjhm();
//                System.out.println("zjhm----------"+zjhm);
//                DecimalFormat df = new DecimalFormat("#");//转换成整型
//                String zjhm_2 = df.format(zjhm);
//                System.out.println("zjhm2----------"+zjhm_2);
//                String zjhm_str = String.format("%.0f",kc_vo.getZjhm());
//                System.out.println("zjhmstr----------"+zjhm_str);
                
                rowList.add(kc_vo.getZjhm());
                rowList.add(kc_vo.getZhdh());
                rowList.add(kc_vo.getLczh());
                rowList.add(StringUtil.nullToSpace(khlx_map.get(kc_vo.getKhlx().trim())));
                rowList.add(StringUtil.nullToSpace(fxdj_map.get(kc_vo.getFxdj().trim())));
                rowList.add(StringUtil.nullToSpace(gszk_map.get(kc_vo.getGszk().trim())));
                rowList.add(kc_vo.getGsjgmc());
                rowList.add(kc_vo.getGsjl());
                rowList.add(kc_vo.getYxbl());
                //String cjsj = DateTimeUtil.formatDateTime(kc_vo.getCjsj());
                //rowList.add(cjsj);
                dataList.add(rowList);
            }
            
            // 导出文件路径
            String downloadFilePath = "C:" + File.separator + "cap4j" + File.separator + "download" + File.separator;
            IPCodeInfoVO codeInfoVO = directoryService.findInfoByTypeCodeAndInfoCode(
                    CFNConstants.PLATFORM_CONFIG, CFNConstants.PLATFORM_CONFIG_DOWNLOAD_PATH);
            if (codeInfoVO != null && !StringUtils.isEmpty(codeInfoVO.getMbtmz())) {
                downloadFilePath = codeInfoVO.getMbtmz();
            }
            
//            String downloadFilePath = request.getSession().getServletContext().getRealPath("/exportload");
            
            // 导出文件名称
            String datetimeStr = DateTimeUtil.formatDate(new Date(), "yyyyMMddHHmmss");
            String fileName = "客户列表_" + datetimeStr;
            
//            String fileName = "";
//            try {
//                fileName = URLDecoder.decode("khxxCx_list","utf-8");
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
            
            // 导出CSV文件
            File csvFile = CSVUtils.createCSVFile(headList, dataList, downloadFilePath, fileName);
            
            return csvFile;
        }

 

分享到:
评论

相关推荐

    Java导出CSV文件

    java导出数据时,如果对数据格式没有特殊要求,为了提高效率可以导出CSV格式的文件,导出CSV文件不支持多个sheet页。

    java 导出csv格式文件(支持实体类输入)

    java 导出csv格式文件(支持实体类输入)

    java导出csv文件并压缩(含下载提示功能)

    在Java编程环境中,导出CSV(逗号分隔值)文件并将其压缩成ZIP格式是一项常见的任务,特别是在处理大量数据时。CSV文件因其简洁、通用的格式,常用于数据交换和存储。本教程将深入讲解如何实现这个过程,并提供前...

    java 浏览器导出csv文件

    2.生成csv,中文无乱码,数据不会科学计数法; 3.支持大数据下载; 4.后台服务java语言实现,前端不限制; 5.前端代码: [removed]void(0)" class="layui-btn"&gt; &lt;i class="fa fa-refresh"&gt;&nbsp;导出Excel ...

    java 大数据导出csv小工具

    标题中的“java 大数据导出csv小工具”指的是一个基于Java编程语言开发的应用程序,其主要功能是将大量数据转换并导出为CSV(逗号分隔值)格式的文件。CSV是一种通用的文件格式,广泛用于数据交换,因为它可以被...

    java导出CSV文件,EXCEL文件(不用指定下载路劲)

    在Java编程中,导出CSV(Comma Separated Values)和Excel文件是常见的数据处理任务,特别是在数据分析、报表生成和数据交换场景下。本篇将详细介绍如何在Java中实现这两个功能,无需指定下载路径,直接将文件保存到...

    java 导出csv文件并上传sftp

    在Java编程环境中,导出CSV(Comma Separated Values)文件是一种常见的数据交换格式,尤其在数据处理和分析中非常流行。CSV文件以其简洁、易读的特性,使得它们成为跨平台传输数据的理想选择。本篇文章将深入探讨...

    java实现csv导出千万级数据实例

    本实例聚焦于“java实现csv导出千万级数据实例”,旨在提供一个高效、稳定的解决方案,避免因数据量过大而导致的性能问题,如Java中的栈溢出(Stack Overflow)。CSV(Comma Separated Values)格式因其简单、通用性...

    java csv大数据量导出(千万级别,不会内存溢出)

    在Java开发中,处理大数据量的数据导出是一个常见的挑战,特别是在CSV格式的文件处理上。CSV(Comma Separated Values)是一种广泛使用的数据交换格式,因其简单性和通用性而受到青睐。然而,当数据量达到千万级别时...

    高性能导出csv

    在IT领域,高效地导出CSV文件是一项重要的技能,特别是在大数据处理、数据分析以及报表生成等场景。下面我们将详细探讨如何实现高性能的CSV导出。 1. **内存管理与数据分块** 高性能CSV导出首先要考虑的是内存管理...

    Java 导出CSV

    - **速度**:与Excel相比,使用Java导出CSV文件通常更快,因为它避免了Excel的内存占用和计算开销。 - **灵活性**:Java可以灵活地控制文件的生成过程,例如自定义分隔符、编码、换行符等。 - **可扩展性**:Java...

    java实现导出csv文件并上传sftp

    在Java开发中,有时我们需要将后端数据导出为CSV(Comma Separated Values)文件,以便用户可以方便地下载和处理数据。CSV文件是一种通用的、轻量级的数据交换格式,适合存储表格数据。本篇文章将深入探讨如何使用...

    EasyCSV_导出CSV工具类_easyCsv导出csv_easy-cvs_easycsv_

    本文将详细介绍一个名为EasyCSV的工具类,它为Java开发者提供了一个简便的方式来导出CSV文件。 EasyCSV是Java的一个轻量级库,设计用于简化CSV文件的读写操作。它的核心功能在于其API简洁易用,使得开发者可以快速...

    java 导出csv

    java 导出csv

    Java操作csv文件

    首先,Java并没有内置的库直接支持CSV操作,但我们可以借助第三方库,如Apache Commons CSV、OpenCSV或Java 8引入的java.util.CSV API。在这里,我们以Apache Commons CSV为例,因为它是业界广泛使用的库,提供了...

    java生成csv文件乱码的解决方法示例 java导出csv乱码

    CSV文件是一种常见的数据交换格式,通常用于导入和导出数据到电子表格程序如Microsoft Excel。当在Java程序中创建或读取CSV文件时,确保正确的字符编码是至关重要的,尤其是对于包含非ASCII字符(如中文字符)的数据...

    java导出,导入CSV

    在Java编程中,CSV(Comma Separated Values)文件是一种常见的数据交换格式,它以逗号分隔每一列数据,广泛用于数据导入和导出。本篇将详细讲解如何使用Java进行CSV文件的导出与导入操作,以及涉及到的相关知识点。...

    csv文件导入导出工具类

    csv的文件的导入导出可能会用的到,需要的可以下一下把

    java导出excel(CVS格式)

    java导出CVS,csv只是一种文件的形式。。。就是按照逗号(英文逗号)分隔的文件 它的做成跟普通的文件做成是一样一样的,只需要创建一个文件(*.csv),把字符串按照一定的格式(AAA,BBB\nCCC,DDD注意必须是英文的...

    java导出excel (CVS格式)

    java导出CVS,csv只是一种文件的形式。。。就是按照逗号(英文逗号)分隔的文件 它的做成跟普通的文件做成是一样一样的,只需要创建一个文件(*.csv),把字符串按照一定的格式(AAA,BBB\nCCC,DDD注意必须是英文的...

Global site tag (gtag.js) - Google Analytics