导出:
==================在服务器上生成csv格式文件===========================
File file = CsvUtil.createCSVFile(listMap, map, path, fileName);
1、其中先获取listMap, 格式为: (‘列名’,‘列值’) 如:(‘1’,‘000000001’),
表示表中的一条记录,可以通过遍历数据库中值赋给listMap,即可以取出数据库中的值;
2、设置map,即给表格设置表头,格式为:(‘列名’,‘列值’)如:(‘1’,‘编号’),注意:这里的列名一定要和listMap中的列名一致,因为是为了给该列设置表头名称;
3、设置path,设置生成表格后的存放路径;
4、设置fileName,设置表格的名称
上述值设置成功后,通过函数:
File file = CsvUtil.createCSVFile(listMap, map, path, fileName);
表格生成成功
==================从服务器上下载生成的表格到本地===========================
1、先获取到fileName,和path
2、设置请求和响应编码格式为UTF-8:
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("UTF-8");
3、创建输入输出流:BufferedInputStream bis = null;
BufferedOutputStream bos = null;
4、得到文件流大小:long fileLength = new File(path).length();
5、将数据塞到响应消息体: response.setContentType("application/x-msdownload;");
response.setHeader("Content-disposition", "attachment;
filename=" + new String(fileName.getBytes("utf-8"), "ISO8859-1"));
response.setHeader("Content-Length", String.valueOf(fileLength));
6、将路径放到输入流
bis = new BufferedInputStream(new FileInputStream(downLoadPath));
7、将响应体放到输出流
bos = new BufferedOutputStream(response.getOutputStream());
8、读取输出流中的数据:
byte[] buff = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
File f = new File(downLoadPath);
if(f.exists()){
f.delete();
}