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();
}
}
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;
}
// 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;
}

Java 导出 CSV的更多相关文章

  1. java导出csv格式文件

    导出csv格式文件的本质是导出以逗号为分隔的文本数据 import java.io.BufferedWriter; import java.io.File; import java.io.FileIn ...

  2. JAVA导出csv出现0.00E+00

    导出csv出现 0.00E+00的问题,打印其值为0E-8:这是因为数据表中无对应数据(decimal),查询结果则为 0e-8. 出现的字段是多个字段相加产生的和,所以这里调用了一个相加的方法.在相 ...

  3. Java导出CSV文件

    以前导出总是用POI导出为Excel文件,后来当我了解到CSV以后,我发现速度飞快. 如果导出的数据不要求格式.样式.公式等等,建议最好导成CSV文件,因为真的很快. 虽然我们可以用Java再带的文件 ...

  4. java导出csv文件使用Excel打开乱码问题

    写一个csv文件,发现使用 notpad++ 打开是没有问题的,但是使用 Excel 打开之后显示乱码 刚开始的代码是这样子的: ByteArrayOutputStream os = new Byte ...

  5. Java导出csv修正时间格式

    处理前导出的日期格式为:yyyy-M-d HH:mm 正确的应该是:yyyy-MM-dd HH:mm:ss 处理方案是在 时间数据两边增加 "\t" 有问题欢迎交流. thanks ...

  6. Java导出Excel和CSV(简单Demo)

    Java导出Excel和CSV的简单实现,分别使用POI和JavaCSV. JavaBean public class ReportInfo { int id; String date; int nu ...

  7. Java生成CSV文件实例详解

    本文实例主要讲述了Java生成CSV文件的方法,具体实现步骤如下: 1.新建CSVUtils.java文件: package com.saicfc.pmpf.internal.manage.utils ...

  8. springMVC导出 CSV案例

    导出csv 第一步 Controller类里调用 OrderParamsVo 传入的参数 orderService.findBuyCSV 查询到要导出的信息 /** * 购买订单CSV * Order ...

  9. 用NPOI实现导入导出csv、xls、xlsx数据功能

    用NPOI实现导入导出csv.xls.xlsx数据功能   直接上代码 首先定义一个接口   如果需要直接操作文件的话,就自己在封装一次 然后定义csv类的具体实现 这个需要引入命名空间LumenWo ...

随机推荐

  1. Debian/Ubuntu安装WPS (转)

    卸载libreoffice sudo apt-get remove --purge libreoffice* 官网下载WPShttp://wps-community.org/downloads?vl= ...

  2. day16作业

    一.填空题 1.Integer Character 2.String s = "123";Integer i = new Integer(s);System.out.println ...

  3. FormData介绍

    FormData XMLHttpRequest Level 2添加了一个新的接口FormData.利用FormData对象,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,我们还可以 ...

  4. sysbench安装及性能测试

    现在的压力测试工具各种各样,只要上手好几款功能强大点的而且比较大众化的压力测试工具即可,以下跟大家交流下sysbench的安装和压力测试 sysbench支持以下几种测试模式: 1.CPU运算性能 2 ...

  5. 墨刀 vs Axure RP

    https://www.jianshu.com/p/b4b9c1f15304 墨刀https://modao.cc/ Axure RP https://www.axure.com/https://ww ...

  6. springboot 解决 woff2、ttf 跨域无法解析问题

    @Configuration public class CORSConfiguration extends WebMvcConfigurerAdapter { @Override public voi ...

  7. Vue2服务端渲染

    Vue2 服务端渲染 花费了一个月时间,终于在新养车之家项目中成功部署了vue2服务端渲染(SSR),并且使用上了Vuex 负责状态管理,首屏加载时间从之前4G网络下的1000ms,提升到了现在500 ...

  8. 【BZOJ】2289: 【POJ Challenge】圆,圆,圆

    题解 二分一个横坐标,过这个横坐标做一条和y轴平行的直线,相当于在这条直线上做区间覆盖,如果区间有交的话,那么答案是True 否则的话取两个不相交的区间,如果这两个圆相离或相切则不合法 否则看看相交的 ...

  9. P1091 合唱队形 DP 最长升序列维护

    题目描述 NN位同学站成一排,音乐老师要请其中的(N-KN−K)位同学出列,使得剩下的KK位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,…,K1,2,…,K,他 ...

  10. hibernate Validator 6.X 的学习,bean的约束(字段,get方法上的验证)

    一:背景说明 验证数据是一个常见的任务,它贯穿于所有应用层,从呈现到持久层.通常在每个层中都执行相同的验证逻辑,耗时且容易出错.为了避免这些验证的重复,开发商往往把验证逻辑直接进入的领域模型,在领域类 ...