需求描述:浏览器上点击下载按钮,下载一个csv文件
实现方案:后台用poi创建一个 XSSFWorkbook workbook = new XSSFWorkbook();(里面的内容根据业务进行填充) 然后用 workbook.write(response.getOutputstream()); 同时response设置保存的文件 名以为 .csv结尾即可。
问题描述:以上方案确实可以生成csv文件,用wps表格打开没有问题,但是如果用文本编辑器比如notepad++ 等打开,就会出现乱码,并且改变其编码格式还是乱码?
原因:用poi生成的workbook本质上还是一个excel,所以用notepad++打开中的乱码其实是excel文件的一些相关设置或者信息。
最终解决方案:csv本质上也是一个txt,或者字符串,所以没有必要用poi来生成,最简单的方案,用字符串拼接的方式,将内容拼接成一个String str; 然后 response.getOutputStream().write(str.getBytes());即可。注意编码格式和文件名(.csv)。