一个导出excel文件的小例子
@RequestMapping("/exportBillDetail")
public void exportBillDetail(@RequestParam(value = "timeSpan") String timeSpan,
@RequestParam(value = "operator", required = false) String operator,
@RequestParam(value = "thirdPart", required = false) String thirdPart,
@RequestParam(value = "interfaceName", required = false) String interfaceName,
HttpServletResponse response) {
File file = new File("temp.csv");
try {
List<String> times = Splitter.on("~").trimResults().splitToList(timeSpan);
Date startTime = DateUtils.parseDate(times.get(0), "yyyy-MM-dd");
Date endTime = DateUtils.parseDate(times.get(1), "yyyy-MM-dd");
List<CreditDailyInfCount> datas = dailyServiceInvokeStatisticsService.queryBillDetail(startTime, endTime, operator, thirdPart, interfaceName);
StringBuilder sb = new StringBuilder("查询时间\t" + timeSpan + "\n事业部\t" + operator + "\n合作方\t" + thirdPart + "\n接口\t" + interfaceName + "\n\n");
sb.append("序号\t事业部\t合作方\t接口\t日期\t次数\t单价\t总价\n");
for (CreditDailyInfCount item : datas) {
sb.append(item.getId()).append("\t");
sb.append(item.getOperationName()).append("\t");
sb.append(item.getThirdPartName()).append("\t");
sb.append(item.getServiceName()).append("\t");
sb.append(DateFormatUtils.format(item.getServiceDate(), "yyyy-MM-dd")).append("\t");
sb.append(item.getServiceCount()).append("\t");
sb.append(item.getPrice()).append("\t");
sb.append(item.getTotalPrice()).append("\n");
}
Files.write(sb.toString().getBytes(), file);
OutputStream out = response.getOutputStream();
response.reset();
response.setContentType("application/ms-excel");
response.setHeader("content-disposition", "attachment; filename=bill.xls");
response.setCharacterEncoding("UTF-8");
long fileLength = file.length();
String length1 = String.valueOf(fileLength);
response.setHeader("Content_Length", length1);
java.io.FileInputStream in = new java.io.FileInputStream(file);
int n;
byte[] b = new byte[1024];
out.write(new byte[]{(byte)0xef,(byte)0xbb,(byte)0xbf});//为excel添加BOM头,否则部分excel打开会乱码
while ((n = in.read(b)) != -1) {
out.write(b, 0, n);
}
in.close();
out.close();
} catch (Exception e) {
logger.error("exportBillDetail-error:", e);
}
}