需求:导出CSV格式的列表数据。

233 阅读1分钟

在写之前的想法就是找找有没有做过类似方法的接口,哎嗨,还真有啊!!于是我就照猫画虎把需求搞出来了,不过整个需求也需要做数据的封装处理。目前主要接触的少,不知道怎么做这个需求。后来看了一下代码。其实页并不难,就是需要注意编码格式问题,其中导出的结果是 .xsls格式的文件。具体的代码思路是如下

// 设置文件头 防止后期编码 乱码问题
HttpHeaders headers = CsvUtil.setCsvHeader(fileName);
// 接口返回的是ResponseEntity<byte[]> 类型的
byte[] value = null;
try {
    value = dataStatisticsService.getCSV(body);
} catch (Exception e) {
    e.printStackTrace();
}

设计 getCSV 接口 以及实现类
// 设计一个可变长字符串
StringBuffer buf = new StringBuffer();
// 表头 记住 要有','分割表示不同的列
buf.append("xxx,").append("xxx,").append("xxx,").append("xxx,").append("xxx,").append("xxx,")
        .append("xxx,").append("xxx,").append("xxx,").append("xxx,");  
        
// 表头之后换行
buf.append("\r\n");
   
// 遍历List 同理也要逗号换行
for(A a : User){
buf.append("xxx,").append("xxx,").append("xxx,").append("xxx,").append("xxx,").append("xxx,")
        .append("xxx,").append("xxx,").append("xxx,").append("xxx,");  
        buf.append("\r\n");
}
// 设计一个输出流,记得编码设置为GBK 否则可能会乱码
ByteArrayOutputStream os = new ByteArrayOutputStream();
try {
    // 写出响应
    os.write(buf.toString().getBytes("GBK"));
    os.flush();
    os.close();
} catch (Exception e) {
    e.printStackTrace();
}

return os.toByteArray();

可以看出整个CSV打印的思路已经写完了,如果还有不懂得,可以留言给我,我会尽力及时回复!!!