http://www.cnblogs.com/dreammyle/p/5458280.html

本文实例主要讲述了Java生成CSV文件的方法,具体实现步骤如下:

1、新建CSVUtils.java文件:

package com.saicfc.pmpf.internal.manage.utils;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 CSVUtils {/*** 生成为CVS文件* * @param exportData 源数据List* @param map csv文件的列表头map* @param outPutPath 文件路径* @param fileName 文件名称* @return*/@SuppressWarnings("rawtypes")public static File createCSVFile(List exportData, LinkedHashMap map, String outPutPath, String fileName) {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();csvFileOutputStream.write("" + (String) propertyEntry.getValue() != null ?(String) propertyEntry.getValue() : "" + "");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) {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:/export/";String fileName = "文件导出";File file = CSVUtils.createCSVFile(exportData, map, path, fileName);String fileName2 = file.getName();System.out.println("文件名称:" + fileName2);}
}

2、调用createCSVFile方法生成CSV文件

  public static void main(String[] args) {String name = "银行退款数据";List exportData = new ArrayList();LinkedHashMap datamMap = null;for (Iterator iterator = refundList.iterator(); iterator.hasNext();) {HashMap map = (HashMap) iterator.next();datamMap = new LinkedHashMap();datamMap.put("1", map.get("merOrderId"));datamMap.put("2", DateUtil.convertDateToString("yyyyMMdd", (Date) map.get("orderTime")));BigDecimal amount = (BigDecimal) map.get("amount");String amountString = amount.divide(new BigDecimal(10)).toPlainString();datamMap.put("3", amountString);datamMap.put("4", map.get("remark") != null ? map.get("remark") : "");exportData.add(datamMap);}LinkedHashMap map = new LinkedHashMap();map.put("1", "订单号");map.put("2", "支付日期");map.put("3", "退货现金金额(整数金额 单位:分)");map.put("4", "退货原因");File file = CSVUtils.createCSVFile(exportData, map, filePath, name);// 生成CSV文件fileName = file.getName();CSVUtils.exportFile(response, filePath + fileName, fileName);// 下载生成的CSV文件}

Java生成CSV文件的方法相关推荐

  1. POI以SAX方式解析Excel2007大文件(包含空单元格的处理) Java生成CSV文件实例详解...

    http://blog.csdn.net/l081307114/article/details/46009015 http://www.cnblogs.com/dreammyle/p/5458280. ...

  2. java 生成csv文件_Java生成CSV文件实例详解

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

  3. java生成csv文件,excel打开文件乱码问题

    之前项目中用到了生成csv文件编码UTF-8在windos下excel打开乱码 二话不说直接撸上代码 解决方法如下: 1:生成csv文件封装类 public class CreateCsvUtil { ...

  4. java导出csv文件_java导出生成csv文件的方法

    本文实例为大家分享了java导出生成csv文件的具体代码,供大家参考,具体内容如下 首先我们需要对csv文件有基础的认识,csv文件类似excel,可以使用excel打开,但是csv文件的本质是逗号分 ...

  5. Java生成CSV文件

    1.新CSVUtils.java文件: package com.saicfc.pmpf.internal.manage.utils;import java.io.BufferedWriter; imp ...

  6. java导出csv文件乱码_记一次java生成csv文件乱码的解决过程 (GB2312编码)

    系统:win7 (格式:中文(简体,中国)) 工具:Eclipse (默认编码utf-8) 服务两个:[restful接口]  和 [服务*** server]. 场景:[服务*** server]多 ...

  7. Java 生成CSV文件

    /*** CSV文件生成方法* @param head 文件头* @param dataList 数据列表* @param outPutPath 文件输出路径* @param filename 文件名 ...

  8. java中csv文件怎么制作_Java生成CSV文件实例详解

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

  9. csv文件 java_Java生成CSV文件实例详解

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

  10. Java实现生成csv文件并导入数据

    一.需求: 下载列表,在没有过滤之前下载列表所有数据,点击过滤之后,下载过滤之后对数据,生成csv文件. 二.思路: 先根据条件(是否过滤了数据)筛选出数据,将数据导入csv文件,生成文件并返回. 三 ...

最新文章

  1. 图像分类:13个Kaggle项目的经验总结
  2. textrank4zh是_GitHub - 997666901/TextRank4ZH: 从中文文本中自动提取关键词和摘要
  3. OpenCV中的数据结构
  4. Halcon例程(基于多个标定图的单目相机标定)详解—— Camera_calibration_multi_image.hdev
  5. leetcode112. 路径总和
  6. 10 行代码构建常见目标检测应用
  7. e - 数据结构实验之查找五:平方之哈希表_leetcode算法之哈希表
  8. Jlink--SWD脚位连接
  9. java 注释标记_如何标记,像老板一样注释内容
  10. WordPress 修改固定链接出错(apache2)
  11. 关于vs2010调用python中Py_Initialize函数报错的原因
  12. offset Dimensions 详解
  13. LeetCode ---8. String to Integer (atoi)
  14. 杭电多校HDU 6579 Operation (线性基 区间最大)题解
  15. python数字图像处理(10):图像简单滤波
  16. 微信公众号验签过程详解--前端和后端的操作
  17. 网络蚂蚁背后的故事(转)
  18. net share列出了Windows的默认共享(包括C盘)
  19. 第二届中国移动“梧桐杯”大数据应用创新大赛总决赛12强名单发布
  20. 《罗辑思维》第31期:你的女神你不懂

热门文章

  1. Mac如何关闭触控板防止误触?内置的设置就可以达成
  2. 金色圣诞幻灯片AE模板
  3. windows,linux桌面系统管理
  4. Linux基础-获取命令帮助与命令的查找(1)
  5. 手工删除oracle的方法
  6. linux 基础命令汇总
  7. JavaScript 省市县数据
  8. C#中类的默认构造函数对类中属性值的初始化情况
  9. using – 再谈.Net Framework(C#/VB.Net)的资源释放
  10. 【Vegas原创】VMWare下,Linux挂载、卸载新硬盘的方法