CSV文件导出2
2024-09-08 20:56:26
public void exportCSVFile( HttpServletResponse response, ResultSet rs,String fileName,String headers) throws SQLException { OutputStream o = null; try {
// String headers = "用户名, 操作时间, 操作模块, 操作内容";// 标题
headers += "\n";
List<Log> logList = new ArrayList<Log>(); Log logs = null;
while (rs.next()) {
logs = new Log();
logs.setUser(rs.getString(1));
logs.setDatetime(rs.getString(2));
logs.setModule(rs.getString(3));
logs.setContent(rs.getString(4));
logList.add(logs);
} if (logList.size() > 0) { for (int i = 0; i < logList.size(); i++) { Log logs1 = logList.get(i); headers += logs1.getUser() + ",";
headers += logs1.getDatetime() + ",";
headers += logs1.getModule() + ",";
headers += logs1.getContent(); headers += "\n"; }
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String dateNowStr = sdf.format(d);
// String fileNames = "导出操作日志数据" + dateNowStr+".csv";
String fileNames = fileName + dateNowStr+".csv"; System.out.println(fileNames);
response.setContentType("application/download;charset=GBK"); response.setContentType("Content-type:application/vnd.ms-excel;charset=GBK"); response.setHeader("Content-Disposition", "attachment;filename="
+ new String(fileNames.getBytes("utf-8"), "iso8859-1"));// 设置头信息
o = response.getOutputStream();
o.write(headers.toString().getBytes("GBK")); } } catch (IOException e) { e.printStackTrace(); } finally { if (o != null) { try { o.close(); } catch (IOException e) { // TODO Auto-generatedcatch block e.printStackTrace(); } } } }
String headers = "用户名, 操作时间, 操作模块, 操作内容";// 标题
String fileName = "导出操作日志数据";
exportCSVFile(response, rs, fileName, headers);
----------------------------------------------
前几天,做的导出csv文件,有个bug,如果服,务器是linux,部署到服务器上就不能导出,后来查出,是导出到了服务器,没有下载到浏览器,
用这个方法,要注意,字节流和字符流的冲突问题;
response.getOutputStream();
PrintWriter out = response.getWriter();
可以将提示写在前台;只用字节流
最新文章
- c#知识点总结
- 大叔也说并行和串行`性能提升N倍(N由操作系统位数和cpu核数决定)
- LOL
- visual studio 的Error List 显示乱码
- Java并发编程实战(使用synchronized实现同步方法)
- [python]在场景中理解装饰器
- linq lambda 分组后排序
- 360 chrome不能登录Google账户
- Linux开机启动流程
- csdn 刷分小工具(刷了1000多被封了,慎用)
- JavaScript HTML DOM - 改变 HTML
- 菜鸟级springmvc+spring+mybatis整合开发用户登录功能(上)
- Appnium-API-Session
- URL.createObjectURL() 实现本地上传图片 并预览功能
- 宝塔MySQL服务自动停止重启的解决方法
- Teradata简介
- SSD 为什么顺序写比随机写性能更好?
- Python——序列
- XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem A. Arithmetic Derivative
- 关于js中的原型链的理解