csv工具类
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.List;
public class CreatCSV {
/**
*
* @Title: creatCSVFile
* @Description: 生成csv文件
* @param filePath 文件路径
* @param fileName 文件名
* @param headList 头部信息
* @param dataList 数据来源
* @param append 是否追加
* @throws
*/
public static void creatCSVFile(String filePath ,String fileName,List<Object> headList,List<List<Object>> dataList,boolean append){
File csvFile = null;
BufferedWriter csvWtriter = null;
try {
csvFile = new File(filePath + fileName);
File parent = csvFile.getParentFile();
if (parent != null && !parent.exists()) {
parent.mkdirs();
}
csvFile.createNewFile();
// csvWtriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csvFile), "GB2312"), 1024);
FileOutputStream fileOutputStream = new FileOutputStream(csvFile,append);
fileOutputStream.write(new byte[]{(byte)0xEF, (byte)0xBB, (byte)0xBF});
csvWtriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream, "UTF-8"), 1024);
// 写入文件头部
if(CollectionUtils.isNotEmpty(headList)){
writeRow(headList, csvWtriter);
}
// 写入文件内容
if(CollectionUtils.isNotEmpty(dataList)){
for (List<Object> row : dataList) {
writeRow(row, csvWtriter);
}
}
csvWtriter.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
csvWtriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
*
* @Title: creatCSVInputStream
* @Description: 生成csv文件流(输入流)
* @param headList
* @param dataList
* @return
* @throws
*/
public static InputStream creatCSVInputStream(List<Object> headList,List<List<Object>> dataList){
BufferedWriter csvWtriter = null;
InputStream is = null;
ByteArrayOutputStream baos = null;
try {
baos = new ByteArrayOutputStream();
csvWtriter = new BufferedWriter(new OutputStreamWriter(baos), 1024);
// 写入文件头部
writeRow(headList, csvWtriter);
// 写入文件内容
for (List<Object> row : dataList) {
writeRow(row, csvWtriter);
}
csvWtriter.flush();
baos.flush();
byte[] bt = baos.toByteArray();
is = new ByteArrayInputStream(bt, 0, bt.length);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
csvWtriter.close();
baos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return is;
}
/**
* 写一行数据
* @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();
String rowStr = sb.append(data).append(",").toString();
csvWriter.write(rowStr);
}
csvWriter.newLine();
}
public static void main(String[] args) {
String filePath = "D:\\";
String fileName = "abc" + ".csv";
List<Object> headList = Lists.newArrayList("楼盘ID","楼盘名称");
CreatCSV.creatCSVFile(filePath,fileName,headList,null,false);
List<List<Object>> dataList = Lists.newArrayList();
List<Object> data = Lists.newArrayList("1","1");
dataList.add(data);
CreatCSV.creatCSVFile(filePath,fileName,null,dataList,true);
}
}