java – 如何使用servlet创建csv文件?
我想从servlet下载csv文件.Data来自Object [] obj = search.getSearch();
我有数据对象[],我需要写入csv并下载. 你能帮帮我怎么做servlet课吗? 解决方法
Object []如何表示CSV数据?它是包含一行有多列还是多行有一列?我想象Object [] []或List< List< Object>>更有意义.
无论如何,在创建CSV文件时你必须遵守RFC4180 spec.它基本上很简单,只有3条严格的规则: >字段用逗号分隔. 这是一个启动示例,它基于List< List< T>>执行此操作.作为源和OutputStream作为目标. public static <T> void writeCsv (List<List<T>> csv,char separator,OutputStream output) throws IOException { BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output,"UTF-8")); for (List<T> row : csv) { for (Iterator<T> iter = row.iterator(); iter.hasNext();) { String field = String.valueOf(iter.next()).replace(""",""""); if (field.indexOf(separator) > -1 || field.indexOf('"') > -1) { field = '"' + field + '"'; } writer.append(field); if (iter.hasNext()) { writer.append(separator); } } writer.newLine(); } writer.flush(); } 以下是如何在Servlet中使用它: protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { List<List<Object>> csv = getItSomehow(); response.setHeader("Content-Type","text/csv"); response.setHeader("Content-Disposition","attachment;filename="file.csv""); writeCsv(csv,';',response.getOutputStream()); } (请注意,基于欧洲的语言环境对CSV文件使用分号而不是逗号,请随时更改) 内容 – 附件处理将强制另存为对话框.请注意,MSIE有一个错误行为,它不会将文件名作为默认文件名保存为另存为对话框,但它取代了pathinfo的最后一部分.因此,如果此servlet例如由http://example.com/csv调用,那么您将获得csv作为默认文件名.而是将其附加到pathinfo,如下面的http://example.com/csv/file.csv.只应将servlet映射到/ csv / *而不是/ csv的url模式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |