csv格式导出文件

先上传连个图片看看效果,这是界面效果dwz框架(springmvc开发)

  

点击导出csv效果图

  js部分的代码(带条件查询的csv导出):

function exportReportCsv(){
        exportAgencyProfitList1();
        }
        function exportAgencyProfitList1($pageNum,$numPerPage){
        var $valueArray={ ‘CUST_ID‘:"${PD.CUST_ID}"==‘ ‘?‘‘:"${PD.CUST_ID}",
                          ‘MYSTS‘:"${PD.MYSTS}"==‘ ‘?‘‘:"${PD.MYSTS}",
                          ‘AGENTID‘:"${PD.AGENTID}"==‘ ‘?‘‘:"${PD.AGENTID}",
                          ‘APPLRDAT1‘:"${PD.APPLRDAT1}"==‘ ‘?‘‘:"${PD.APPLRDAT1}",
                          ‘APPLRDAT2‘:"${PD.APPLRDAT2}"==‘ ‘?‘‘:"${PD.APPLRDAT2}"
                        };
            window.location.href="<%=path%>/customer/exportCsv?"+jQuery.param($valueArray);
            return;
        }    

jsp 代码(其实就是一个onclick事件):

<li><a id="csv" class="edit" href="#" onclick="return exportReportCsv();"><span>导出CSV</span></a></li>

controller部分代码:

@RequestMapping("/customer/exportCsv")
    @ResponseBody
    public void exportCsv1(Page page,HttpServletResponse response) throws Exception{
        //map中装了两个list集合,titles:List<String>   varList : List<PageData>
        logger.info("客户信息csv表格导出");
        pd=this.getPageData(page);
        //csv表数据
        List<Map<String, String>> exportData = null;
        exportData = customerService.findCsvAgt1(pd);
        //csv表头
        LinkedHashMap<String, String> map =customerService.findCsvTabTitle1();
         File file = CSVUtil.createCSVFile(response,exportData, map,CSVUtil.path,CSVUtil.name);//生成CSV文件保存在c:/customer/也就是CSVUtil.path下
          String fileName = file.getName();
         CSVUtil.exportFile(response, CSVUtil.path + fileName, fileName);//将c:/customer/下的文件读取成CSV文件
         CSVUtil.deleteFiles(CSVUtil.path);//删除c:/customer/下的文件,只保留界面生成文件
    }
    

interface部分代码:

/**
     * csv导出
     */
    public LinkedHashMap<String, String> findCsvTabTitle();
    /**
     * csv导出查数据
     */
    public List<Map<String, String>> findCsvAgt(PageData pd) throws Exception;
    

接口实现类代码:

/*
     * csv导出表头
     */
    @Override//设置表头信息
    public LinkedHashMap<String, String> findCsvTabTitle1() {
        logger.info("执行服务,查询客户账户CSV表头:findCsvTabTitle");
        LinkedHashMap<String, String> map = new LinkedHashMap<>();
         map.put("1", "客户ID");
         map.put("2", "客户姓名");
         map.put("3", "账户编号");
         map.put("4", "账户类型");
         map.put("5", "货币类型");
         map.put("6", "账户余额");
         map.put("7", "账户冻结金额");
         map.put("8", "账户带清算金额");
         map.put("9", "账户状态");
         map.put("10", "账户标识");
         map.put("11", "最后一次交易日期");
         map.put("12", "最后一次交易时间");
        return map;
    }
    /*
     * csv导出内容
     */
    @Override
    public List findCsvAgt1(PageData pd) throws Exception {
        logger.info("执行服务,查询客户账户CSV表数据:findCsvAgt1");
        List exportData = new ArrayList<Map>();
        List<PageData> dataList = (List<PageData>) dao.findForList("customerMapper.findCSVAgt1",pd);//从数据库查询数据,mybaits框架
        for (PageData pdd : dataList) {//数据库数据解析,与表头对应起来
            LinkedHashMap map = new LinkedHashMap();
            map.put("1",pdd.getString("CUST_ID"));
            map.put("2",pdd.getString("CUST_NAM") );
            map.put("3",pdd.getString("PAY_AC_NO"));
            map.put("4",pdd.getString("ACC_TYPE") );
            map.put("5",pdd.getString("CCY"));
            map.put("6",pdd.getString("ACC_BALANCE") );
            map.put("7",pdd.getString("ACC_FROZEN_AMT") );
            map.put("8",pdd.getString("ACC_CLEAR_AMT") );
            map.put("9",pdd.getString("AC_STATUS") );
            map.put("10",pdd.getString("LIST_STS_FLG") );
            map.put("11",pdd.getString("LST_TXN_DATE") );
            map.put("12",pdd.getString("LST_TXN_TIME") );
            exportData.add(map);
        }
        return exportData;
    }

sql样板:

<!-- csv导出查询========================================================-->
    <!-- 账户浏览EXCEL表格导出 -->
    <select id="findExcelAgt2" parameterType="pd" resultType="pd">

    select a.CUST_ID as var1,a.CUST_NAM as var2,b.PAY_AC_NO as var3,b.ACC_TYPE as var4,b.ACC_BALANCE as var5,
        CASE b.AC_STATUS
        WHEN ‘0‘ THEN ‘正常‘
        WHEN ‘1‘ THEN ‘未激活‘
        WHEN ‘2‘ THEN ‘冻结‘
        WHEN ‘9‘ THEN ‘已销毁‘
        ELSE NULL END var6,
        b.LST_TXN_DATE as var7
        from ARP_CUST_INFO a
        join ARP_AC_REL  c on c.LINK_ID = a.CUST_ID
        join ARP_AC_PROFILE  b on c.PAY_AC_NO = b.PAY_AC_NO
        where 1 = 1

        <if test="PAY_AC_NO!=null and PAY_AC_NO!=‘‘">
            <![CDATA[AND b.PAY_AC_NO like concat(concat(‘%‘,#{PAY_AC_NO}),‘%‘)]]>
        </if>
        <if test="CUST_ID!=null and CUST_ID!=‘‘">
            <![CDATA[AND a.CUST_ID like concat(concat(‘%‘,#{CUST_ID}),‘%‘)]]>
        </if>
        <if test="AC_STATUS!=null and AC_STATUS!=‘‘">
            <![CDATA[AND b.AC_STATUS like concat(concat(‘%‘,#{AC_STATUS}),‘%‘)]]>
        </if>
        <if test="LST_TXN_DATE1!=null and LST_TXN_DATE1!=‘‘">
            and to_date(b.LST_TXN_DATE,‘YYYYMMDD‘) &gt;= to_date(#{LST_TXN_DATE1},‘YYYY-MM-DD‘)
        </if>
        <if test="LST_TXN_DATE2!=null and LST_TXN_DATE2!=‘‘">
            and to_date(b.LST_TXN_DATE,‘YYYYMMDD‘) &lt;= to_date(#{LST_TXN_DATE2},‘YYYY-MM-DD‘)
        </if>
            order by b.LST_TXN_DATE desc,b.LST_TXN_TIME desc
    </select>

工具类********这才是核心的部分:

csv导出工具类
/**
 *
 */
package com.common.util;

/**
 * 描述:
 * @author  GK
 * @date 创建时间:2016年7月14日 下午3:18:02
 * @version 1.0
*/
/**
 * @author Administrator
 *
 */
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;
public class CSVUtil {
    public  static final String name="customer";//生成文件的名的前缀,如customer89809808080.csv
    public  static final String path="c:/customer/";//生成csv文件的保存路径
    /**
       * 生成为CVS文件
       * @param exportData
       *       源数据List
       * @param map
       *       csv文件的列表头map
       * @param outPutPath
       *       文件路径
       * @param fileName
       *       文件名称
       * @return
       */
      @SuppressWarnings("rawtypes")
      public static File createCSVFile(HttpServletResponse response,List exportData, LinkedHashMap map,String outPutPath, String fileName ) {
          response.setContentType("application/csv;charset=UTF-8");

        File csvFile = null;
        BufferedWriter csvFileOutputStream = null;
        try {
          File file = new File(outPutPath);
          if (!file.exists()) {
            file.mkdir();
          }
          //定义文件名格式并创建
          csvFile = File.createTempFile(fileName, ".csv", new File(outPutPath));
          System.out.println("csvFile:" + csvFile);
          // UTF-8使正确读取分隔符","
          csvFileOutputStream = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(
            csvFile), "UTF-8"), 1024);
          System.out.println("csvFileOutputStream:" + csvFileOutputStream);
          // 写入文件头部
          for (Iterator propertyIterator = map.entrySet().iterator(); propertyIterator.hasNext();) {
            java.util.Map.Entry propertyEntry = (java.util.Map.Entry) propertyIterator.next();
            if((String) propertyEntry.getValue() != null) {
                csvFileOutputStream.write((String) propertyEntry.getValue());
            }else{
                csvFileOutputStream.write("");
            }
            if (propertyIterator.hasNext()) {
              csvFileOutputStream.write(",");
            }
          }
          csvFileOutputStream.newLine();
          // 写入文件内容
          for (Iterator iterator = exportData.iterator(); iterator.hasNext();) {
            Object row = (Object) iterator.next();
            for (Iterator propertyIterator = map.entrySet().iterator(); propertyIterator
              .hasNext();) {
              java.util.Map.Entry propertyEntry = (java.util.Map.Entry) propertyIterator
                .next();
              csvFileOutputStream.write((String) BeanUtils.getProperty(row,
                (String) propertyEntry.getKey()));
              if (propertyIterator.hasNext()) {
                csvFileOutputStream.write(",");
              }
            }
            if (iterator.hasNext()) {
              csvFileOutputStream.newLine();
            }
          }
          csvFileOutputStream.flush();
        } catch (Exception e) {
          e.printStackTrace();
        } finally {
          try {
            csvFileOutputStream.close();
          } catch (IOException e) {
            e.printStackTrace();
          }
        }
      return csvFile;
      }

      /**
       * 下载文件
       * @param response
       * @param csvFilePath
       *       文件路径
       * @param fileName
       *       文件名称
       * @throws IOException
       */
      public static void exportFile(HttpServletResponse response, String csvFilePath, String fileName)
        throws IOException {
        response.setContentType("application/csv;charset=UTF-8");
        response.setHeader("Content-Disposition",
          "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));

        InputStream in = null;
        try {
          in = new FileInputStream(csvFilePath);
          int len = 0;
          byte[] buffer = new byte[1024];
          response.setCharacterEncoding("UTF-8");
          OutputStream out = response.getOutputStream();
          while ((len = in.read(buffer)) > 0) {
            out.write(new byte[] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF });
            out.write(buffer, 0, len);
          }
        } catch (FileNotFoundException e) {
          System.out.println(e);
        } finally {
          if (in != null) {
            try {
              in.close();
            } catch (Exception e) {
              throw new RuntimeException(e);
            }
          }
        }
      }

      /**
       * 删除该目录filePath下的所有文件
       * @param filePath
       *      文件目录路径
       */
      public static void deleteFiles(String filePath) {
        File file = new File(filePath);
        if (file.exists()) {
          File[] files = file.listFiles();
          for (int i = 0; i < files.length; i++) {
            if (files[i].isFile()) {
              files[i].delete();
            }
          }
        }
      }

      /**
       * 删除单个文件
       * @param filePath
       *     文件目录路径
       * @param fileName
       *     文件名称
       */
      public static void deleteFile(String filePath, String fileName) {
        File file = new File(filePath);
        if (file.exists()) {
          File[] files = file.listFiles();
          for (int i = 0; i < files.length; i++) {
            if (files[i].isFile()) {
              if (files[i].getName().equals(fileName)) {
                files[i].delete();
                return;
              }
            }
          }
        }
      }

      /**
       * 测试数据
       * @param args
       */
      @SuppressWarnings({ "rawtypes", "unchecked" })
      public static void main(String[] args) {
          HttpServletResponse response;
        List exportData = new ArrayList<Map>();
        Map row1 = new LinkedHashMap<String, String>();
        row1.put("1", "11");
        row1.put("2", "12");
        row1.put("3", "13");
        row1.put("4", "14");
        exportData.add(row1);
        row1 = new LinkedHashMap<String, String>();
        row1.put("1", "21");
        row1.put("2", "22");
        row1.put("3", "23");
        row1.put("4", "24");
        exportData.add(row1);
        LinkedHashMap map = new LinkedHashMap();
        map.put("1", "第一列");
        map.put("2", "第二列");
        map.put("3", "第三列");
        map.put("4", "第四列");

        String path = "c:/";
        String fileName = "文件导出";
//        File file = CSVUtil.createCSVFile(response,exportData, map, path, fileName);
//        String fileName2 = file.getName();
//       System.out.println("文件名称:" + fileName2);
      }
}

到此就结束啦。。。

时间: 2024-10-16 22:25:37

csv格式导出文件的相关文章

CSVHelper 导出CSV 格式

public class CSVHelper { System.Windows.Forms.SaveFileDialog saveFileDialog1;//保存 private string header = string.Empty;//标题 /// <summary> /// 初始化打印设置 /// </summary> /// <param name="printID"></param> protected void InitEx

导入CSV格式的数据

导入CSV格式的数据 (参见http://dev.mysql.com/doc/refman/5.6/en/load-data.html) 1.数据库表(st_pptn_r) CREATE TABLE st_pptn_r ( STCD varchar(8) DEFAULT NULL, TM datetime DEFAULT NULL, DRP decimal(5,1) DEFAULT NULL, INTV decimal(5,2) DEFAULT NULL, PDR decimal(5,2) DE

goalng导出excel(csv格式)

最近项目中有个小需求,需要将查询结果导出到excel.之间前java比较容易,使用POI很容易就能实现,查了下golang的文档,发现golang下边并没有导出excel的包,但是却有一个encoding/csv的包,看了下发现可以导出csv文件,大家都知道csv文件其实就是文本格式的excel文件,可以直接通过excel打开或是导入excel. 看起来挺好的,问题如愿解决,但是事实证明对已一个还不成熟的语言或是库最好还是先测一下的好.兴冲冲的卸了测试例子,成功导出了一个text.csv文件,一

linux操作系统-给文本添加 &#39; -单引号,一般转成CSV格式时使用

[[email protected] ~]# cat 1.txt1ms2ms3ms4ms5ms [[email protected] ~]# cat 1.txt | awk '{print $1"\047"}'1ms'2ms'3ms'4ms'5ms' [[email protected] ~]# cat 1.txt | awk '{print $1"\047"}' > 2.txt[[email protected] ~]# cat 2.txt1ms'2ms'3

js实现的数组和CSV格式的相互转换

js实现的数组和CSV格式的相互转换:csv格式就是用逗号分割的值,例如以下形式: 蚂蚁部落,2,antzone,青岛市南区 下面介绍一下csv格式和数组元素的相互转换.一.数组元素转换为CSV格式: var theArray=["蚂蚁部落",2,"antzone","青岛市南区"]; console.log(theArray.join()); 二.csv格式转换为数组元素: var str="蚂蚁部落,2,antzone,青岛市南区&

C#对.CSV格式的文件--逗号分隔值 的读写及上传ftp服务器操作方法总结

前言 公司最近开发需要将数据保存到.csv文件(逗号分隔值 )中然后上传到ftp服务器上,供我们系统还有客户系统调用,之前完全没有接触过这个,所以先来看看百度的解释:逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据.CSV文件由任意数目的记录组成,记录间以某种换行符分隔:每条记录由字段组成,字段间的分隔符是其它字

mac OS X:将CSV格式转换为Excel文档格式

一:在Mac上如果你使用Excel打开windows导出的CSV格式文档,你会发现表格中所有的的内容都显示在A列.那么,如何恢复正常呢,你可以将CSV格式的文档导入到Excel文档中,这样就正常显示了. 1. 2. 3. 4. 5. 6. 7. 8. 9. 二:中文乱码解决方法 使用 Numbers软件打开文档,然后 ps: 其实可以不用Excel的,直接使用Numbers就足够了,编辑和导出. 版权声明:本文为博主原创文章,未经博主允许不得转载.

postgresql数据库配置csv格式日志输出

postgresql数据库配置csv格式日志输出 下面介绍postgresql数据库中关于csv格式日志(pg中一种比较详细的日志输出方式)的设置方法. 1.进入$PGDATA目录(pg的安装目录,根据具体情况名称有所区别)下找到配置文件postgresql.conf 2.开启csvlog输出功能: #开启csvlog输出功能(默认为off) logging_collector = on 注:修改完logging_collector后需要重启数据库(当然你也可以继续配置,在所有配置都完成后再重启

OpenCart 之 CSV 格式商品导入

OpenCart 之 CSV 格式商品导入 OpenCart 之 CSV 格式商品导入   3 评价  |  如果您对本商品有什么问题或经验,请在此留下您的意见和建议! 后台登录信息: 用户名: demo 密码: demo后台演示网址型 号: COC-A0002 ¥115.00 税前: ¥115.00购买所需积分: 60 购买数量: +- * 扩充功能安装:              --- 请选择 ---                          自己安装