首页 > 技术文章 > java使用CsvPrinter导出csv

sds95 2020-08-20 14:16 原文

//创建输出流,防止Excel打开乱码

public static CSVPrinter getCsvPrinter(String fileName, String[] header) throws Exception {
    OutputStream out = new FileOutputStream("地址"+ fileName);
CSVFormat csvFormat = CSVFormat.DEFAULT.withHeader(header);
OutputStreamWriter osw = new OutputStreamWriter(out);
// 防止Excel打开乱码
byte[] bytes = {(byte) 0xEF, (byte) 0xBB, (byte) 0xBF};
osw.write(new String(bytes));
return new CSVPrinter(osw, csvFormat);
}
int count = 数据大小
limit(默认)与count取小
CSVPrinter csvPrinter = CsvExportUtil.getCsvPrinter(fileName, "表头");
for (int i = 0; i < (int) Math.ceil(count * 1.0 / limit); i++) {
  //进行分页获取
List<> list = xxxMapper.getList(条件, i * limit, limit);
exportCommon(list, csvPrinter);
}
csvPrinter.flush();
//记得关闭
csvPrinter.close();
return fileName;

exportCommon()方法就是将传进来的实体类导出到csv中
其中
csvPrinter.printRecord(可以按你表头的顺序放入值,也可以放入list,注意顺序就行)行

csvPrinter.printRecords(可以按你表头的顺序放入值,也可以放入list,注意顺序就行)列

推荐阅读