参考 : Java 导出 CSV - 残星 - 博客Java 导出 CSV - 残星 - 博客园Java 导出 CSV - 残星 - 博客
注 : 导出csv无法设置列宽
import java.io.*;
import java.util.LinkedList;
import java.util.List;
/**
* @Auther: liyue
* @Date: 2019/1/15 15:42
* @Description:
*/
public class CsvUtil {
public static void main(String[] args) {
List<String> head = new LinkedList<String>() {{
add("t1");
add("t2");
add("t3");
add("t4");
}};
List<List<String>> data = new LinkedList<List<String>>() {{
add(new LinkedList<String>() {{
add("11");
add("12");
add("13");
add("14");
}});
add(new LinkedList<String>() {{
add("sdfsfdsfddfsssss21");
add("22");
add("23");
add("24");
}});
}};
createCSVFile(head, data, "/Users/leyili/Desktop/csv/", "test");
}
/**
* 生成csv文件
*
* @param head
* @param dataList
* @param outPutPath
* @param filename
* @return
*/
public static String createCSVFile(List<String> head, List<List<String>> dataList,
String outPutPath, String filename) {
File csvFile = null;
BufferedWriter csvWtriter = null;
try {
csvFile = new File(outPutPath + File.separator + filename + ".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<String> row : dataList) {
writeRow(row, csvWtriter);
}
csvWtriter.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
csvWtriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return outPutPath + filename;
}
/**
* 写一行数据方法
*
* @param row
* @param csvWriter
* @throws IOException
*/
private static void writeRow(List<String> row, BufferedWriter csvWriter) throws IOException {
// 写入文件头部
for (Object data : row) {
StringBuffer sb = new StringBuffer();
String rowStr = sb.append("\"").append(data).append("\",").toString();
csvWriter.write(rowStr);
}
csvWriter.newLine();
}
}