栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java生成CSV文件实例详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java生成CSV文件实例详解

本文实例主要讲述了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 {

  
  @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;
  }

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

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

  
  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;
   }
 }
      }
    }
  }

  
  @SuppressWarnings({ "rawtypes", "unchecked" })
  public static void main(String[] args) {
    List exportData = new ArrayList();
    Map row1 = new linkedHashMap();
    row1.put("1", "11");
    row1.put("2", "12");
    row1.put("3", "13");
    row1.put("4", "14");
    exportData.add(row1);
    row1 = new linkedHashMap();
    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文件

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文件
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/152113.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号