【Java】使用CSVUtils生成文件并供下载
2016-05-06 13:48
676 查看
package com.msk.ds.logic; import java.io.*; import java.util.List; /** * Created by Administrator on 2016/5/4. */ public class CSVUtils { public static File createCSVFile(List<Object> head, List<List<Object>> dataList, String outPutPath, String filename) { File csvFile = null; BufferedWriter csvWtriter = null; try { csvFile = new File(outPutPath + File.separator + filename + ".csv"); File parent = csvFile.getParentFile(); if (parent != null && !parent.exists()) { parent.mkdirs(); } csvFile.createNewFile(); // GB2312使正确读取分隔符"," csvWtriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream( csvFile), "UTF-8"), 1024); // 写入文件头部 writeRow(head, csvWtriter); // 写入文件内容 for (List<Object> row : dataList) { writeRow(row, csvWtriter); } csvWtriter.flush(); } catch (Exception e) { e.printStackTrace(); } finally { try { csvWtriter.close(); } catch (IOException e) { e.printStackTrace(); } } return csvFile; } /** * 写一行数据方法 * * @param row * @param csvWriter * @throws IOException */ private static void writeRow(List<Object> row, BufferedWriter csvWriter) throws IOException { // 写入文件头部 for (Object data : row) { StringBuffer sb = new StringBuffer(); String rowStr = sb.append("\"").append(data).append("\",").toString(); csvWriter.write(rowStr); } csvWriter.newLine(); } }
/** * 导出CSV数据 * @return 数据 */ @RequestMapping(value = "dataExport",method = RequestMethod.POST) public @ResponseBody int dataExport(HttpServletResponse response) throws IOException{ List<DsPrintTask> list=sc182211Logic.findDataExport(); // 设置表格头 Object[] head = {"任务编码", "操作码", "阅读码", "品牌名", "等级名"}; List<Object> headList = Arrays.asList(head); // 设置数据 List<List<Object>> dataList = new ArrayList<List<Object>>(); List<Object> rowList = null; for (int i = 0; i < list.size(); i++) { rowList = new ArrayList<Object>(); rowList.add(list.get(i).getPrintTaskId()); rowList.add(list.get(i).getOperateBar()); rowList.add(list.get(i).getReadBar()); rowList.add(list.get(i).getBrandName()); rowList.add(list.get(i).getGradeName()); dataList.add(rowList); } String downloadFilePath ="D:/test"; String fileName = "标签列表"; // 导出CSV文件 CSVUtils.createCSVFile(headList, dataList, downloadFilePath, fileName); response.setHeader("Content-Disposition", "attachment;filename=" + "liq.csv"); response.setContentType("application/csv;charset=GBK"); File file = new File("D:/test/标签列表.csv"); InputStream in = new FileInputStream(file); int len = 0; byte bytes[] = new byte[1024 * 8]; while ((len = in.read(bytes)) != -1) { response.getOutputStream().write(bytes, 0, len); } in.close();// 关闭流 .... return NumberConst.IntDef.INT_ONE; }
相关文章推荐
- Java:使用Executors创建和管理线程
- java初学者:接口技术文章
- JAVA自学之路1-JDK安装及配置
- 用Jersey构建RESTful服务-JAVA对象转成XML/Json输出
- 导入eclipse项目出错Gradle DSL method not found: 'android()'
- 【Java】数据库查询的数据直接以指定文件类型下载到本地(弹出下载框)
- java.lang.String.indexOf()方法
- 4、Ajax与Java交互的案例
- springmvc错误java.lang.IllegalArgumentException
- Java线程专栏文章汇总
- spring-data-jpa 中,如果使用了one-to-many , many-to-one的注释,会在Jackson进行json字符串化的时候出现错误
- 3、在Ajax于Java的交互过程中,加入加载图片
- Spring框架的搭建
- 常见快捷键eclipse
- spring 学习
- 2、Ajax与Java通过POST方式交互
- java底层知识(4)--伪共享
- Windows7配置Java环境变量
- Java 多线程
- springmvc Rest 风格的 CRUD