1. package com.cib.cap4j.cfn.util;
  2.  
  3. import java.io.BufferedWriter;
  4. import java.io.File;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.io.OutputStreamWriter;
  8. import java.util.List;
  9.  
  10. /**
  11. *
  12. * CSV文件导出工具类
  13. *
  14. * Created on 2014-08-07
  15. * @author
  16. * @reviewer
  17. */
  18. public class CSVUtils {
  19.  
  20. /**
  21. * CSV文件生成方法
  22. * @param head
  23. * @param dataList
  24. * @param outPutPath
  25. * @param filename
  26. * @return
  27. */
  28. public static File createCSVFile(List<Object> head, List<List<Object>> dataList,
  29. String outPutPath, String filename) {
  30.  
  31. File csvFile = null;
  32. BufferedWriter csvWtriter = null;
  33. try {
  34. csvFile = new File(outPutPath + File.separator + filename + ".csv");
  35. File parent = csvFile.getParentFile();
  36. if (parent != null && !parent.exists()) {
  37. parent.mkdirs();
  38. }
  39. csvFile.createNewFile();
  40.  
  41. // GB2312使正确读取分隔符","
  42. csvWtriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(
  43. csvFile), "GB2312"), 1024);
  44. // 写入文件头部
  45. writeRow(head, csvWtriter);
  46.  
  47. // 写入文件内容
  48. for (List<Object> row : dataList) {
  49. writeRow(row, csvWtriter);
  50. }
  51. csvWtriter.flush();
  52. } catch (Exception e) {
  53. e.printStackTrace();
  54. } finally {
  55. try {
  56. csvWtriter.close();
  57. } catch (IOException e) {
  58. e.printStackTrace();
  59. }
  60. }
  61. return csvFile;
  62. }
  63.  
  64. /**
  65. * 写一行数据方法
  66. * @param row
  67. * @param csvWriter
  68. * @throws IOException
  69. */
  70. private static void writeRow(List<Object> row, BufferedWriter csvWriter) throws IOException {
  71. // 写入文件头部
  72. for (Object data : row) {
  73. StringBuffer sb = new StringBuffer();
  74. String rowStr = sb.append("\"").append(data).append("\",").toString();
  75. csvWriter.write(rowStr);
  76. }
  77. csvWriter.newLine();
  78. }
  79. }
  1. public @ResponseBody void exportExcel(HttpServletRequest request, HttpServletResponse response, KhxxCxVO vo) throws IOException{
  2. File csvFile = createCSVFile(request,vo);
  3.  
  4. BufferedInputStream bis = null;
  5. BufferedOutputStream bos = null;
  6.  
  7. response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode(csvFile.getName(), "UTF-8"));
  8.  
  9. response.setHeader("Content-Length", String.valueOf(csvFile.length()));
  10.  
  11. bis = new BufferedInputStream(new FileInputStream(csvFile));
  12. bos = new BufferedOutputStream(response.getOutputStream());
  13. byte[] buff = new byte[2048];
  14. while (true) {
  15. int bytesRead;
  16. if (-1 == (bytesRead = bis.read(buff, 0, buff.length))) break;
  17. bos.write(buff, 0, bytesRead);
  18. }
  19. bis.close();
  20. bos.close();
  21. }
  22.  
  23. public File createCSVFile(HttpServletRequest request,KhxxCxVO vo){
  24.  
  25. vo.setKhxm(StringUtil.formatDbLikeValue(vo.getKhxm()));
  26.  
  27. String yybh = ContextUtil.getLoginUser().getUserId();
  28. String cur_ssjg = ContextUtil.getLoginUser().getUserUnit();
  29. String unitPath = ContextUtil.getLoginUser().getUnitPath();
  30.  
  31. IPStaffVO staff = ipStaffService.findStaffByKey(yybh);
  32.  
  33. String yhlx = staff.getYhlx();
  34.  
  35. if((!cur_ssjg.equals(unitPath)) && yhlx.equals("2")){
  36. vo.setCur_path(StringUtil.formatDbLeftLikeValue(unitPath.trim()));
  37. }else if(yhlx.equals("1")){
  38. vo.setCur_ssjg(cur_ssjg.trim());
  39. }
  40.  
  41. // 设置表格头
  42. Object[] head = {"客户姓名", "证件类型", "证件号码", "银行账号", "理财账号", "客户类型", "风险等级", "归属状况", "归属机构", "客户经理", "营销比例(%)" };
  43. List<Object> headList = Arrays.asList(head);
  44.  
  45. List<KhxxCxVO> list = iKhxxCxService.findAllInfos(vo, Integer.MAX_VALUE, 0);
  46.  
  47. // 码表取出证件类型
  48. Map<String, String> zjlx_map = new HashMap<String, String>();
  49. List<IPCodeInfoVO> zjlx_list = directoryService.findInfoListByTypeCode("zjlx", null);
  50. if ((zjlx_list != null) && (zjlx_list.size() > 0)){
  51. for (Iterator i$ = zjlx_list.iterator(); i$.hasNext(); ) {
  52. IPCodeInfoVO ipci_vo = (IPCodeInfoVO)i$.next();
  53. zjlx_map.put(ipci_vo.getMblxbh(), ipci_vo.getMbtmz());
  54. }
  55. }
  56. Map<String, String> khlx_map = new HashMap<String, String>();
  57. List<IPCodeInfoVO> khlx_list = directoryService.findInfoListByTypeCode("khlx", null);
  58. if ((khlx_list != null) && (khlx_list.size() > 0)){
  59. for (Iterator i$ = khlx_list.iterator(); i$.hasNext(); ) {
  60. IPCodeInfoVO ipci_vo = (IPCodeInfoVO)i$.next();
  61. khlx_map.put(ipci_vo.getMblxbh(), ipci_vo.getMbtmz());
  62. }
  63. }
  64. Map<String, String> fxdj_map = new HashMap<String, String>();
  65. List<IPCodeInfoVO> fxdj_list = directoryService.findInfoListByTypeCode("fxdj", null);
  66. if ((fxdj_list != null) && (fxdj_list.size() > 0)){
  67. for (Iterator i$ = fxdj_list.iterator(); i$.hasNext(); ) {
  68. IPCodeInfoVO ipci_vo = (IPCodeInfoVO)i$.next();
  69. fxdj_map.put(ipci_vo.getMblxbh(), ipci_vo.getMbtmz());
  70. }
  71. }
  72. Map<String, String> gszk_map = new HashMap<String, String>();
  73. List<IPCodeInfoVO> gszk_list = directoryService.findInfoListByTypeCode("gszk", null);
  74. if ((gszk_list != null) && (gszk_list.size() > 0)){
  75. for (Iterator i$ = gszk_list.iterator(); i$.hasNext(); ) {
  76. IPCodeInfoVO ipci_vo = (IPCodeInfoVO)i$.next();
  77. gszk_map.put(ipci_vo.getMblxbh(), ipci_vo.getMbtmz());
  78. }
  79. }
  80. // 设置数据
  81. List<List<Object>> dataList = new ArrayList<List<Object>>();
  82. List<Object> rowList = null;
  83. for (int i = 0; i < list.size(); i++) {
  84. rowList = new ArrayList<Object>();
  85. KhxxCxVO kc_vo = list.get(i);
  86. //rowList.add(i + 1);
  87. rowList.add(kc_vo.getKhxm());
  88. rowList.add(StringUtil.nullToSpace(zjlx_map.get(kc_vo.getZjlx().trim())));
  89.  
  90. // String zjhm= kc_vo.getZjhm();
  91. // System.out.println("zjhm----------"+zjhm);
  92. // DecimalFormat df = new DecimalFormat("#");//转换成整型
  93. // String zjhm_2 = df.format(zjhm);
  94. // System.out.println("zjhm2----------"+zjhm_2);
  95. // String zjhm_str = String.format("%.0f",kc_vo.getZjhm());
  96. // System.out.println("zjhmstr----------"+zjhm_str);
  97.  
  98. rowList.add(kc_vo.getZjhm());
  99. rowList.add(kc_vo.getZhdh());
  100. rowList.add(kc_vo.getLczh());
  101. rowList.add(StringUtil.nullToSpace(khlx_map.get(kc_vo.getKhlx().trim())));
  102. rowList.add(StringUtil.nullToSpace(fxdj_map.get(kc_vo.getFxdj().trim())));
  103. rowList.add(StringUtil.nullToSpace(gszk_map.get(kc_vo.getGszk().trim())));
  104. rowList.add(kc_vo.getGsjgmc());
  105. rowList.add(kc_vo.getGsjl());
  106. rowList.add(kc_vo.getYxbl());
  107. //String cjsj = DateTimeUtil.formatDateTime(kc_vo.getCjsj());
  108. //rowList.add(cjsj);
  109. dataList.add(rowList);
  110. }
  111.  
  112. // 导出文件路径
  113. String downloadFilePath = "C:" + File.separator + "cap4j" + File.separator + "download" + File.separator;
  114. IPCodeInfoVO codeInfoVO = directoryService.findInfoByTypeCodeAndInfoCode(
  115. CFNConstants.PLATFORM_CONFIG, CFNConstants.PLATFORM_CONFIG_DOWNLOAD_PATH);
  116. if (codeInfoVO != null && !StringUtils.isEmpty(codeInfoVO.getMbtmz())) {
  117. downloadFilePath = codeInfoVO.getMbtmz();
  118. }
  119.  
  120. // String downloadFilePath = request.getSession().getServletContext().getRealPath("/exportload");
  121.  
  122. // 导出文件名称
  123. String datetimeStr = DateTimeUtil.formatDate(new Date(), "yyyyMMddHHmmss");
  124. String fileName = "客户列表_" + datetimeStr;
  125.  
  126. // String fileName = "";
  127. // try {
  128. // fileName = URLDecoder.decode("khxxCx_list","utf-8");
  129. // } catch (Exception e) {
  130. // e.printStackTrace();
  131. // }
  132.  
  133. // 导出CSV文件
  134. File csvFile = CSVUtils.createCSVFile(headList, dataList, downloadFilePath, fileName);
  135.  
  136. return csvFile;
  137. }
  1. // Excel导出
  2. function exportExcel(e) {
  3. // csv导出
  4. var params = "";
  5. params += "khxm=" + $J.getbyName("khxm").getValue();
  6. params += "&zjlx=" + $J.getbyName("zjlx").getValue();
  7. params += "&zjhm=" + $J.getbyName("zjhm").getValue();
  8. params += "&sjhm=" + $J.getbyName("sjhm").getValue();
  9. params += "&khlx=" + $J.getbyName("khlx").getValue();
  10. params += "&fxdj=" + $J.getbyName("fxdj").getValue();
  11. params += "&zhdh=" + $J.getbyName("zhdh").getValue();
  12. params += "&lczh=" + $J.getbyName("lczh").getValue();
  13. params += "&gsjg=" + $J.getbyName("gsjg").getValue();
  14. params += "&gsjl=" + $J.getbyName("gsjl").getValue();
  15. params += "&gszk=" + $J.getbyName("gszk").getValue();
  16. params += "&yxbl=" + $J.getbyName("yxbl").getValue();
  17. window.location = "<%= request.getContextPath() %>/khxxCx/exportExcel.do?" + params;
  18. }

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. [原创]jQuery Validation范例

    上班无事,学习jQuery Validation,于是手写一公共范例,并收藏以便后用 验证操作类formValidatorClass.js }); 测试页index.html         * {} ...

  2. vmware提示:此虚拟机似乎正在使用中,无法取得所有权的解决办法

    在虚拟机运行时,一次非正常关机.导致虚拟机出现以下错误: 此虚拟机似乎正在使用中. 如果此虚拟机已在使用中,请按“取消”按钮,以免损坏它.如果此虚拟机未使用,请按“取得所有权(&T)”按钮以获 ...

  3. Laravel 的计划任务

    避免并发执行 $schedule->command('emails:send')->withoutOverlapping(); 这里需要注意,对于 call function 定义的计划任 ...

  4. pyqt5-组件

    组件(widgets)是构建一个应用的基础模块.PyQt5有广泛的各式各样的组件,包含:复选按钮(QCheckBox),切换按钮(ToggleButton),滑块条(QSlider),进度条(Prog ...

  5. #Plugin 中国省市选择插件

    中国省市选择插件  ChineseCities 1.原生JS,不依赖jquery,zepto 2.前端学习交流群:814798690 源码查看 点击下载 https://github.com/chao ...

  6. 最长回文子串—Manacher 算法 及 python实现

    最长回文子串问题:给定一个字符串,求它的最长回文子串长度.如果一个字符串正着读和反着读是一样的,那它就是回文串.   给定一个字符串,求它最长的回文子串长度,例如输入字符串'35534321',它的最 ...

  7. Python学习笔记之函数式编程

    python中的高阶函数 高阶函数就是 变量名指向函数,下面代码中的变量abs其实是一个函数,返回数字的绝对值,如abs(-10) 返回 10 def add(x,y,f): return f(x) ...

  8. 了解java内存模型,看这里就够了

    转载请注明作者与出处 程序计数器 线程私有 因为物理cpu并不多,所以jvm是对java里面的线程进行不停的切换执行,因为切换的执行速度太快,所以我们看到是并发执行.所以jvm在切换线程执行后,如果要 ...

  9. windows下解决PyCharm控制台中文输出乱码

    我用的PyCharm是2018.2版本 在调用os.system()的过程中遇到了控制台中文乱码的问题,具体如下 网上说的将两个Encoding格式都设置为UTF-8并没有解决问题,后来我将Proje ...

  10. MyBatis Plus + Activiti 整合报错:org.springframework.beans.factory.UnsatisfiedDependencyException

    org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'ind ...