zoukankan      html  css  js  c++  java
  • java导出cvs文件

    package testcvs;

    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    import java.util.ArrayList;
    import java.util.List;

    /**
    *
    * CSV文件导出工具类
    */
    public class CSVUtils {

           public static void main(String[] args) {

    List<Object> list = new ArrayList();
    list.add("标题1姓名");
    list.add("标题2年龄");

    List<Object> list3=new ArrayList<Object>();
    list3.add("数据11");
    list3.add("数据22");
    List<List<Object>> dataList=new ArrayList<List<Object>>();
    dataList.add(list3);

    createCSVFile(list, dataList);
    System.out.println("ok");
    }

    /**
    * CSV文件生成方法
    *
    * @param head
    * @param dataList
    * @param outPutPath
    * @param filename
    * @return
    */
    public static File createCSVFile(List<Object> head,
    List<List<Object>> dataList) {

    File csvFile = null;
    BufferedWriter csvWtriter = null;
    try {
    csvFile = new File("d:\ExportCVSFile.csv");//d:\ExportCVSFile.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();

        //rowStr"标题1姓名",
        // rowStr"标题2年龄",
        // rowStr"数据11",
        // rowStr"数据22",

      String rowStr = sb.append(""").append(data).append("",").toString();//"+数据+"
      csvWriter.write(rowStr);
    }
      csvWriter.newLine();//每次调用换一行
    }
    }

    最终效果图:

  • 相关阅读:
    网站访问量大 怎样优化mysql数据库
    BootStrap 模态框禁用空白处点击关闭
    常用SQL语句
    诅咒JavaScript之----ArcGIS JavaScript 点聚合 ClusterLayer
    模态框与 天地图地图控件冲突
    FXK Javascript
    从列表中或数组中随机抽取固定数量的元素组成新的数组或列表
    wangEditor
    手把手教你用vue-cli构建一个简单的路由应用
    解决eclipse端口被占用的问题
  • 原文地址:https://www.cnblogs.com/jack1208-rose0203/p/4811932.html
Copyright © 2011-2022 走看看