javaCSV导出

1.

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


import javax.servlet.http.HttpServletResponse;
/**
 * CSV工具类
 * @author Administrator
 *
 */
public class CSVUtils {
/**
* 替换空格
* @param content
* @return
*/
public static String trimChars(String content){  
    if(content == null){  
        return "";  
    } 
    if(content.equals("")){
    return "";
    }
    // @====> 1.包含,同事包含",那么久先替换双引号"为两个""+然后在包裹在双引号里。  
    if (content.contains(",") && content.contains("\"")) {  
        content = content.replaceAll(",", " "); // 逗号替换为空格  
        content = content.replaceAll("\"", "\"\"");  
        content = "\"" + content + "\"";  
    }else if (content.contains(",")) {  
        content = content.replaceAll(",", " ");  
    }else if (content.contains("null")){
    content = content.replaceAll("null", "");
    }else {  
        // @====> 2.如果仅仅包含逗号,则用引号包裹即可。  
        if (content.contains(",") && !content.contains("\"")) {  
            content = content.replaceAll(",", " "); // 逗号替换为空格  
            content = "\"" + content + "\"";  
        }  
        // @====> 3.如果仅仅包含引号,则双引号代替一个引号,再最外层在包裹即可。  
        if (content.contains("\"") && !content.contains(",")) {  
            content = "\"" + content.replaceAll("\"", "\"\"") + "\"";  
        }  
    }  
    content=content.replaceAll("\r|\n","");
    return content;  

/**
* 导出
*/
public static void exportCsv(String fileName, String content,  
            HttpServletResponse response) throws IOException {  
  
        // 设置文件后缀  
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhh24mmss");  
        String fn = fileName.concat(sdf.format(new Date()).toString() + ".csv");  
  
        // 读取字符编码  
        //String csvEncoding = PropertiesUtil.getProperty("CSV_ENCODING");  
  
        // 设置响应  
        response.setCharacterEncoding("iso-8859-1");  
        response.setContentType("text/csv; charset=iso-8859-1");  
        response.setHeader("Pragma", "public");  
        response.setHeader("Cache-Control", "max-age=30");  
        response.setHeader("Content-Disposition", "attachment; filename="  
                + new String(fn.getBytes(), "iso-8859-1"));  
  
        // 写出响应  
        OutputStream os = response.getOutputStream();  
        os.write(content.getBytes("GBK"));  
        os.flush();  
        os.close();  

    }   

}

2.

String colsName="列名" ;

String c = formatCsvData(resultList, colsName);
CsvWriter.exportCsv("导出文件名", c, response);

}
/**
* csv导出
* @param data
* @param displayColNames
* @return
*/
public static String formatCsvData(List data,  
            String displayColNames) {  
  
        StringBuffer buf = new StringBuffer();  
        String[] displayColNamesArr = null;  
        displayColNamesArr = displayColNames.split(",");  
        // 输出列头  
        for (int i = 0; i < displayColNamesArr.length; i++) {  
            buf.append(displayColNamesArr[i]).append(",");  
        }  
        buf.append("\r\n");  
  
        if (null != data) {  
            // 输出数据  
            for (int i = 0; i < data.size(); i++) {  
            Object[] vo = (Object[]) data.get(i);
            buf.append(CommonUtil.killNull("'"+vo[0])).append(",")
            .append(CommonUtil.killNull("'"+vo[1])).append(",")
            .append(CommonUtil.killNull("'"+vo[2])).append(",")
            .append(CommonUtil.killNull(vo[3])).append(",")
            .append(CommonUtil.killNull(vo[4])).append(",")
            .append(CommonUtil.killNull("'"+vo[5])).append(",")
            .append(CommonUtil.killNull("'"+vo[6])).append(",")
            .append(CommonUtil.killNull(vo[7])).append(",")
            .append(CommonUtil.killNull(vo[8])).append(",")
            .append(CommonUtil.killNull("\t"+vo[9])).append(",");
                buf.append("\r\n");  
            }  
        }  
        return buf.toString();  
    }  

}  



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值