工具类CreateCSVUtilsJava生成csv文件代码

Csv文件支持excel文件格式打开,但是却不需要poi的支持,文件生成更加简单,方便,可功能却不如poi那样的强大

下面是生产CSV文件的代码

主要分成两个两个类

1.类是常量抽取形成类,便于改动不影响工具类

2.生成csv文件工具类

*会使用到joda-time的jar,下载解压就好

常量类FileConstantUtilsp

package com.boss.util;

import java.io.File;
import java.util.Arrays;
import java.util.List;


/**
* CSV常量工具类
*/
public class FileConstantUtils {

public final static List<Object> MEASURE_HEAD_LIST = Arrays.asList(
"客户ID",
"产品ID",
"产品类型"
);

// 导出文件路径
public final static String DOWNLOAD_FILE_PATH = "D:" + File.separator + "csv" + File.separator + "download" + File.separator;
public final static String FILE_NAME = "存疑报表";
}

工具类CreateCSVUtils 

package com.kscloud.boss.charge.util;

import org.joda.time.DateTime;
import java.io.*;
import java.util.List;
import java.util.Locale;

public class CreateCSVUtils {
/**
* 创建CSV文件类型
* @param dataLists
* @return
*/

public static File createCSVFile( List<Object> dataLists, List<Object> headList) throws IOException {

File csvFile = null;
BufferedWriter csvWrite = null;
DateTime dateTime=new DateTime();
String stringDate = dateTime.toString("yyyy年MM月dd日HH时mm分ss秒", Locale.CHINESE);
try {

//定义文件类型
csvFile = new File(FileConstantUtils.DOWNLOAD_FILE_PATH + File.separator + FileConstantUtils.FILE_NAME +stringDate+ ".csv");
//去文件目录
File parent = csvFile.getParentFile();
if (parent.exists()) {
parent.mkdirs();

}

//创建文件
csvFile.createNewFile();
csvWrite = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csvFile), "GB2312"), 1024);

//写入表头
write(headList, csvWrite);
//写入数据

for ( Object dataList:dataLists){
write((List<Object>)dataList, csvWrite);
}
csvWrite.flush();
} catch (IOException e) {
throw new IOException("文件生成失败");
} finally {

try {
csvWrite.close();

} catch (IOException e) {

throw new IOException("关闭文件流失败");
}
}

return csvFile;
}



/**
* 将数据按行写入数据
*
* @param dataList
* @param csvWreite
* @throws IOException
*/
private static void write(List<Object> dataList,BufferedWriter csvWreite) throws IOException {

for (Object data: dataList) {
StringBuffer buffer=new StringBuffer();
String rowStr=buffer.append("\"").append(data).append("\",").toString();
csvWreite.write(rowStr);
// csvWreite.newLine();
}
csvWreite.newLine();
}

}