自己备忘、顺便分享。方便你我他
类库
//我用的gradle 用maven的同志自己改一下。版本用哪个都一样。
compile('org.apache.commons:commons-csv:1.6')
工具包
我用的GBK格式,需要的自己改成UTF-8或者其他
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVPrinter;
import org.apache.commons.csv.CSVRecord;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import lombok.extern.slf4j.Slf4j;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Slf4j
public class CsvUtil {
// CSV文件分隔符
private final static String NEW_LINE_SEPARATOR = "\n";
/** CSV文件列分隔符 */
private static final String CSV_COLUMN_SEPARATOR = ",";
/** CSV文件列分隔符 */
private static final String CSV_RN = "\r\n";
/**
* 写入csv文件
* @param headers 列头
* @param data 数据内容
* @param filePath 创建的csv文件路径
* @throws IOException
**/
public static void writeCsvWithHeader(String[] headers, List<Object[]> data, String filePath) {
// 初始化csvformat
CSVFormat format = CSVFormat.DEFAULT.withHeader(headers);
try {
// 根据路径创建文件,并设置编码格式
FileOutputStream fos = new FileOutputStream(filePath);
OutputStreamWriter osw = new OutputStreamWriter(fos, "GBK");
// 创建CSVPrinter对象
CSVPrinter printer = new CSVPrinter(osw, format);
if (null != data) {
// 循环写入数据
for (Object[] lineData : data) {
printer.printRecord(lineData);
}
}
printer.flush();
printer.close();
} catch (IOException e) {
e.printStackTrace();