使用jxl输出excel表格
2016-04-28 16:16
513 查看
@RequestMapping(value = "/checkAccountExport")
public void checkAccountExport(final ModelMap model,
@RequestParam Map<String, String> params,
HttpServletResponse response, HttpServletRequest request) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
int random = (int) (Math.random() * 10000);
String fileName = "check_"+sdf.format(new Date())+"_"+random+".xls";
OutputStream os = null;
try {
request.setCharacterEncoding("UTF-8");
os = response.getOutputStream(); // 取得输出流
response.reset(); // 清空输出流
response.setHeader("Content-disposition", "attachment;filename="
+ new String(fileName.getBytes("GBK"), "ISO8859-1"));
response.setContentType("application/msexcel;charset=UTF-8");// 定义输出类型
expordExcel(os, params, fileName);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
if(os != null){
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//生成一个表格
/**
* 导出Excel报表
*
* */
private void expordExcel(OutputStream os, Map<String, String> params, String fileName)
throws Exception {
if(params.get("createTimeBegin") == null && params.get("createTimeEnd")==null){
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String transTime = sdf.format(date);
String transTimeBegin = transTime + " 00:00";
String transTimeEnd = transTime + " 23:59";
params.put("createTimeBegin", transTimeBegin);
params.put("createTimeEnd", transTimeEnd);
}
List<Map<String, Object>> list = checkAccountBatchService.queryCheckAccountBatchs(params);
int row = 2; // 从第三行开始写
int col = 0; // 从第一列开始写
if (params.get("createTimeBegin") == null && params.get("createTimeEnd") == null) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String transTime = sdf.format(date);
String transTimeBegin = transTime + " 00:00";
String transTimeEnd = transTime + " 23:59";
params.put("createTimeBegin", transTimeBegin);
params.put("createTimeEnd", transTimeEnd);
}
Workbook wb = Workbook.getWorkbook(this.getClass().getResourceAsStream("/template/CHECK_MSG.xls"));
WritableWorkbook wwb = Workbook.createWorkbook(os, wb);
WritableSheet ws = wwb.getSheet(0);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat checkDateFormat = new SimpleDateFormat("yyyy-MM-dd");
NumberFormat nf = new NumberFormat("0.00");
WritableCellFormat numFormat = new WritableCellFormat(nf);
numFormat.setAlignment(Alignment.RIGHT);
for (int i = 0; i < list.size(); i++) {
ws.addCell(new Label(col++, row, StringUtil.filterNull(list.get(i).get("check_batch_no"))));
ws.addCell(new Label(col++, row, StringUtil.filterNull(list.get(i).get("acq_enname"))));
ws.addCell(new Label(col++, row, StringUtil.filterNull(list.get(i).get("acq_cnname"))));
ws.addCell(new jxl.write.Number(col++, row,Double.valueOf(StringUtil.getDoubleValue(list.get(i).get("acq_total_amount"))) ,numFormat));
ws.addCell(new jxl.write.Number(col++, row, Double.valueOf(StringUtil.getDoubleValue(list.get(i).get("acq_total_items")))));
ws.addCell(new jxl.write.Number(col++, row, Double.valueOf(StringUtil.getDoubleValue(list.get(i).get("acq_total_success_items")))));
ws.addCell(new jxl.write.Number(col++, row, Double.valueOf(StringUtil.getDoubleValue(list.get(i).get("acq_total_failed_items")))));
ws.addCell(new jxl.write.Number(col++, row, Double.valueOf(StringUtil.getFloatValue(list.get(i).get("total_amount"))),numFormat));
ws.addCell(new jxl.write.Number(col++, row, Double.valueOf(StringUtil.getDoubleValue(list.get(i).get("total_items")))));
ws.addCell(new jxl.write.Number(col++, row, Double.valueOf(StringUtil.getDoubleValue(list.get(i).get("total_success_items")))));
ws.addCell(new jxl.write.Number(col++, row, Double.valueOf(StringUtil.getDoubleValue(list.get(i).get("total_failed_items")))));
// ws.addCell(new jxl.write.Number(col++, row, Double.valueOf(StringUtil.filterNull(list.get(i).get("total_revoked_items")))));
ws.addCell(new Label(col++, row, StringUtil.filterNull(list.get(i).get("total_revoked_items"))));
ws.addCell(new Label(col++, row, translateCheckResult(list.get(i).get("check_result"))));
ws.addCell(new Label(col++, row, list.get(i).get("check_file_date")==null?"":checkDateFormat.format(list.get(i).get("check_file_date"))));
ws.addCell(new Label(col++, row, list.get(i).get("check_time")==null?"":dateFormat.format(list.get(i).get("check_time"))));
ws.addCell(new Label(col++, row, StringUtil.filterNull(list.get(i).get("check_file_name"))));
ws.addCell(new Label(col++, row, StringUtil.filterNull(list.get(i).get("operator"))));
ws.addCell(new Label(col++, row, list.get(i).get("create_time")==null?"":dateFormat.format(list.get(i).get("create_time"))));
row++;
col = 0;
}
wwb.write();
wwb.close();
wb.close();
os.close();
}
public void checkAccountExport(final ModelMap model,
@RequestParam Map<String, String> params,
HttpServletResponse response, HttpServletRequest request) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
int random = (int) (Math.random() * 10000);
String fileName = "check_"+sdf.format(new Date())+"_"+random+".xls";
OutputStream os = null;
try {
request.setCharacterEncoding("UTF-8");
os = response.getOutputStream(); // 取得输出流
response.reset(); // 清空输出流
response.setHeader("Content-disposition", "attachment;filename="
+ new String(fileName.getBytes("GBK"), "ISO8859-1"));
response.setContentType("application/msexcel;charset=UTF-8");// 定义输出类型
expordExcel(os, params, fileName);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
if(os != null){
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//生成一个表格
/**
* 导出Excel报表
*
* */
private void expordExcel(OutputStream os, Map<String, String> params, String fileName)
throws Exception {
if(params.get("createTimeBegin") == null && params.get("createTimeEnd")==null){
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String transTime = sdf.format(date);
String transTimeBegin = transTime + " 00:00";
String transTimeEnd = transTime + " 23:59";
params.put("createTimeBegin", transTimeBegin);
params.put("createTimeEnd", transTimeEnd);
}
List<Map<String, Object>> list = checkAccountBatchService.queryCheckAccountBatchs(params);
int row = 2; // 从第三行开始写
int col = 0; // 从第一列开始写
if (params.get("createTimeBegin") == null && params.get("createTimeEnd") == null) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String transTime = sdf.format(date);
String transTimeBegin = transTime + " 00:00";
String transTimeEnd = transTime + " 23:59";
params.put("createTimeBegin", transTimeBegin);
params.put("createTimeEnd", transTimeEnd);
}
Workbook wb = Workbook.getWorkbook(this.getClass().getResourceAsStream("/template/CHECK_MSG.xls"));
WritableWorkbook wwb = Workbook.createWorkbook(os, wb);
WritableSheet ws = wwb.getSheet(0);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat checkDateFormat = new SimpleDateFormat("yyyy-MM-dd");
NumberFormat nf = new NumberFormat("0.00");
WritableCellFormat numFormat = new WritableCellFormat(nf);
numFormat.setAlignment(Alignment.RIGHT);
for (int i = 0; i < list.size(); i++) {
ws.addCell(new Label(col++, row, StringUtil.filterNull(list.get(i).get("check_batch_no"))));
ws.addCell(new Label(col++, row, StringUtil.filterNull(list.get(i).get("acq_enname"))));
ws.addCell(new Label(col++, row, StringUtil.filterNull(list.get(i).get("acq_cnname"))));
ws.addCell(new jxl.write.Number(col++, row,Double.valueOf(StringUtil.getDoubleValue(list.get(i).get("acq_total_amount"))) ,numFormat));
ws.addCell(new jxl.write.Number(col++, row, Double.valueOf(StringUtil.getDoubleValue(list.get(i).get("acq_total_items")))));
ws.addCell(new jxl.write.Number(col++, row, Double.valueOf(StringUtil.getDoubleValue(list.get(i).get("acq_total_success_items")))));
ws.addCell(new jxl.write.Number(col++, row, Double.valueOf(StringUtil.getDoubleValue(list.get(i).get("acq_total_failed_items")))));
ws.addCell(new jxl.write.Number(col++, row, Double.valueOf(StringUtil.getFloatValue(list.get(i).get("total_amount"))),numFormat));
ws.addCell(new jxl.write.Number(col++, row, Double.valueOf(StringUtil.getDoubleValue(list.get(i).get("total_items")))));
ws.addCell(new jxl.write.Number(col++, row, Double.valueOf(StringUtil.getDoubleValue(list.get(i).get("total_success_items")))));
ws.addCell(new jxl.write.Number(col++, row, Double.valueOf(StringUtil.getDoubleValue(list.get(i).get("total_failed_items")))));
// ws.addCell(new jxl.write.Number(col++, row, Double.valueOf(StringUtil.filterNull(list.get(i).get("total_revoked_items")))));
ws.addCell(new Label(col++, row, StringUtil.filterNull(list.get(i).get("total_revoked_items"))));
ws.addCell(new Label(col++, row, translateCheckResult(list.get(i).get("check_result"))));
ws.addCell(new Label(col++, row, list.get(i).get("check_file_date")==null?"":checkDateFormat.format(list.get(i).get("check_file_date"))));
ws.addCell(new Label(col++, row, list.get(i).get("check_time")==null?"":dateFormat.format(list.get(i).get("check_time"))));
ws.addCell(new Label(col++, row, StringUtil.filterNull(list.get(i).get("check_file_name"))));
ws.addCell(new Label(col++, row, StringUtil.filterNull(list.get(i).get("operator"))));
ws.addCell(new Label(col++, row, list.get(i).get("create_time")==null?"":dateFormat.format(list.get(i).get("create_time"))));
row++;
col = 0;
}
wwb.write();
wwb.close();
wb.close();
os.close();
}
相关文章推荐
- 快速排序
- 插入排序
- 树莓派B+上手小记--使用HDMI线连接显示器
- boost compile
- C++ 牛人博客(不断更新中...)
- c++ 实现百度自动搜索
- 新写的c++日志库:log4K
- VC编译错误:一个或多个多重定义的符号
- CThreadPool
- 10 Code Coverage Tools for C &amp; C++
- gcov源码,供学习使用。
- c++ string 转GUID及反转
- Java 将内容写入到某个文件中
- select、poll、epoll之间的区别总结
- Jenkins 简介和安装
- Java读取txt或其他文件以UTF-8格式输出的时候,第一行代码出现“?”乱码的原因及解决方案!
- Android 去除最上面应用名称及图标
- digest 用户认证 response生成算法
- 以短链服务为例,探讨免AppKey、免认证、Ajax跨域调用新浪微博API
- 字符串反转