您的位置:首页 > 编程语言 > Java开发

【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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: