导出CSV文件

@RequestMapping(value = "/exportData", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@ResponseBody
public byte[] exportData(HttpServletResponse response,
PushReportQueryParam param) {
byte[] data = null;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
if ((format.parse(param.getEndTime()).getTime() - format.parse(
param.getStartTime()).getTime())
/ (1000 * 24 * 3600) > 90) {
return data;
}
} catch (ParseException e1) {
logger.error("PushActivityController --> exportData error");
return null;
}

String fileName = "push_activity.csv";
try {
response.setContentType("text/csv; charset=UTF-8");
response.setHeader("Content-Disposition", "attachment; filename="
+ new String((fileName).getBytes("utf-8"), "iso-8859-1"));
response.setHeader("Content-Transfer-Encoding", "binary");
response.setHeader("Cache-Control",
"must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
data = pushActivity.exportData(param);
} catch (Exception e) {
logger.error("GuessUserAnalyzeController --> exportData error");
return null;
}
return data;
}

 

 

 

public byte[] exportData(PushReportQueryParam param) {
List<Map<String, Object>> returnResult = pushReportDao
.exportData(param);
byte[] data = packupDataForCsv(returnResult);
return data;
}

 

 

 

private byte[] packupDataForCsv(List<Map<String, Object>> datalist) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
if (datalist != null && datalist.size() > 0) {
// excel header
Map<String, Object> data = datalist.get(0);
Set<String> keys = data.keySet();
StringBuffer dataBuf = new StringBuffer();
for (Object key : keys) {
dataBuf.append((String) key);
dataBuf.append(",");
}
dataBuf.append("\r\n");
for (int i = 0; i < datalist.size(); i++) {
Map<String, Object> recordMap = datalist.get(i);
for (Object key : keys) {
Object cell = recordMap.get(key);
dataBuf.append(String.valueOf(cell).replace("\r\n", ""));
dataBuf.append(",");
}
dataBuf.append("\r\n");
}
String dataStr = new String(dataBuf);
baos.write(dataStr.getBytes("GBK"));
baos.flush();
}
return baos.toByteArray();
} catch (Exception e) {
return null;
} finally {
try {
baos.close();
} catch (IOException e) {
}

}
}

posted @ 2017-12-11 15:29  贪吃的柳柳  阅读(841)  评论(0编辑  收藏  举报