@RequestMapping(value = "/exportUserSourceConsumeFundList", method = RequestMethod.GET)
public void doExportUserSourceConsumeFundList(HttpServletResponse response, UserProfileVO userProfile, Integer exportType) throws Exception {
LOGGER.info("用户消费金额导出:usersource/exportUserSourceConsumeFundList");
if (null != userProfile.getBeginTime()) {
userProfile.setBeginDateTime(DateUtil.parseDate(userProfile.getBeginTime()));
}
if (null != userProfile.getEndTime()) {
userProfile.setEndDateTime(DateUtil.parseDate(userProfile.getEndTime()));
}
List<UserProfileVO> userSourceConsumeFundList = userProfileBO.exportUserSourceConsumeFundList(userProfile);
String[] columns = {"账户用户名","用户真实姓名","手机号","消费金额","加金额","注册时间"};
String[] dataFields = {"username","name","mobile","fundAmount","goldAmount","registerTime"};
// 设置response参数,可以打开下载页面
response.reset();
response.setContentType("application/vnd.ms-excel;charset=utf-8");
ServletOutputStream out = response.getOutputStream();
if (exportType == ExportFileType.XLS.getKey()) {
Workbook wb = new HSSFWorkbook();
response.setHeader("Content-Disposition", "attachment;filename=" + new String((EXPORT_NAME_USER_CONSUME_FUND + DateUtil.formatStandardDate(new Date()) + EXTENSION_XLS).getBytes(), "iso-8859-1"));
FileUtil.<UserProfileVO>exportExcel(out, columns, dataFields, userSourceConsumeFundList, wb, EXPORT_NAME_USER_CONSUME_FUND);
} else if (exportType == ExportFileType.XLSX.getKey()) {
Workbook wb = new XSSFWorkbook();
response.setHeader("Content-Disposition", "attachment;filename=" + new String((EXPORT_NAME_USER_CONSUME_FUND + DateUtil.formatStandardDate(new Date()) + EXTENSION_XLSX).getBytes(), "iso-8859-1"));
FileUtil.<UserProfileVO>exportExcel(out, columns, dataFields, userSourceConsumeFundList,wb, EXPORT_NAME_USER_CONSUME_FUND);
} else if (exportType == ExportFileType.CSV.getKey()) {
response.setHeader("Content-Disposition", "attachment;filename=" + new String((EXPORT_NAME_USER_CONSUME_FUND + DateUtil.formatStandardDate(new Date()) + EXTENSION_CSV).getBytes(), "iso-8859-1"));
FileUtil.<UserProfileVO>exportCsvFile(out, columns, dataFields, userSourceConsumeFundList, EXPORT_NAME_USER_CONSUME_FUND);
}
}
public static <T> void exportExcel(OutputStream out,String[] columns, String[] dataFields, List<T> dataList, Workbook wb, String fileName) throws Exception {
// 创建第一个sheet(页),并命名
Sheet sheet = wb.createSheet(fileName);
// 创建第一行
Row row = sheet.createRow((short) 0);
Cell cell = null;
// 创建title
for (int i = 0; i < columns.length; i++) {
cell = row.createCell(i);
cell.setCellValue(columns[i]);
}
for (int i = 0; i < dataList.size(); i++) {
row = sheet.createRow(i + 1);
T userTemp = dataList.get(i);
HashMap<String, Object> userMap = HashMapUtil.objToHash(userTemp);
for (int j = 0; j < dataFields.length; j++) {
cell = row.createCell(j);
String dataField = dataFields[j];
Object value = userMap.get(dataField);
if (value != null) {
cell.setCellValue(value.toString());
} else {
cell.setCellValue("");
}
}
}
ByteArrayOutputStream os = new ByteArrayOutputStream();
try {
wb.write(os);
} catch (IOException e) {
e.printStackTrace();
}
byte[] content = os.toByteArray();
InputStream is = new ByteArrayInputStream(content);
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(is);
bos = new BufferedOutputStream(out);
byte[] buff = new byte[2048];
int bytesRead;
// Simple read/write loop.
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
} catch (final IOException e) {
e.getMessage();
} finally {
if (bis != null) {
bis.close();
}
if (bos != null){
bos.close();
}
}
}
分享到:
相关推荐
python小爬虫
最全的JAVA设计模式,包含原理图解+代码实现
CPPC++_世界上最快的3d贴图转换工具
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
CPPC++_OSGI for C 通往架构师之路
童心派贪吃蛇游戏pygame版
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
python python学习代码2【KL】.zip
C#面向对象23种设计模式
CPPC++_现代活动指标
自学入门Python优质中文资源索引,包含书籍-文档-视频,适用于爬虫-Web-数据分析-机器学习方
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
CPPC++_通过carlarosbridge在carla上实现自动驾驶planning and control
学习的Python笔记,都是精华
cppc++
cppc++
I06C0hws-Duke
Python+MySQL学习项目
cppc++