dbutils的导出下载功能(excel)
来源:互联网 发布:mac软件可以移动吗? 编辑:程序博客网 时间:2024/06/05 11:51
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version></dependency>
1.
<input type="button" name="button" onclick="cashDetailExport();"class="btn btn82 btn_export" value="导出">==============================================================================================function cashDetailExport() {$("#cashDetailQuery").attr("action",ctx()+'/cash/cashDetailExport'); $("#cashDetailQuery").submit(); $("#cashDetailQuery").attr("action", ctx()+'/cash/cashDetailQuery');}===============================================================================================@RequestMapping("/cashDetailExport")public void cashDetailExport(@RequestParam Map<String, String> params, HttpServletResponse response, HttpServletRequest request) throws Exception {List<Map<String, Object>> list=cashRequestService.cashExportQuery(params);if(list.size()>0){exportCashExcel(response, request,list);} else {// response.sendRedirect("/cash/cashDetailQuery");render(HTML_TYPE, "<html><script>alert('没有查询到符合条件的数据,不予导出!');"+ "window.location='cashDetailQuery';</script></html>", response);}}===============================================================================================/** * 导出结算信息(这个Query_Param和cashDetailQuery里的查询一起封装,见文章最下的图) * @param params * @return */public List<Map<String, Object>> cashExportQuery(Map<String, String> params) throws Exception{List<Object> list = new ArrayList<Object>();String sql = Query_Param(params, list);return dao.find(sql, list.toArray());}===============================================================================================private String Query_Param(Map<String, String> params,List<Object> list){StringBuffer sb = new StringBuffer();if (StringUtils.isNotEmpty(params.get("request_time_begin"))) {String request_time_begin = params.get("request_time_begin");sb.append(" and apd.settle_time >=to_date(?,'yyyy-mm-dd HH24:MI:SS') ");list.add(request_time_begin);}if(StringUtils.isNotEmpty(params.get("request_time_end"))){String request_time_end=params.get("request_time_end");sb.append(" and apd.settle_time <=todate(?,'yyyy-mm-dd HH24:MI:SS') ");list.add(request_time_end);}if(StringUtils.isNotEmpty(params.get("cash_status")) && !params.get("cash_status").equals("-1")){String cash_status=params.get("cash_status");sb.append("and apd.status=?");list.add(cash_status);}String sql ="select apd.*, dic.dic_item_name statusName from agent_pay_detail apd "+ " left join (select sd.dic_item_code, sd.dic_item_name from sys_dic_item sd where sd.sys_dic_code = 'ACSETTLE_STATUS') dic "+ " on apd.status = dic.dic_item_code"+sb.toString();return sql;}===============================================================================================private String merExcelPath = "merExcel";private void exportCashExcel(HttpServletResponse response,HttpServletRequest request, List<Map<String, Object>> list) throws Exception {SimpleDateFormat sm = new SimpleDateFormat("yyyyMMddHHmmss");String date = sm.format(new Date());String parentpath = request.getSession().getServletContext().getRealPath("/")+ File.separator + "uploads" + File.separator + cashExcelPath;File file = new File(parentpath);if (!file.exists() || file.isFile()) {file.mkdirs();}String fiename = "结算信息_" + date + ".xls";File result = ExcelUtils.getCashExcel(parentpath, fiename, list);FileUtils.Download(result, response); //下载}===============================================================================================/** * 将结算信息写入Excel(如果有合并项,可以在sql中处理) * @param parentPath * @param filename * @param list * @return * @throws Exception */public static File getCashExcel(String parentPath, String filename,List<Map<String, Object>> list) throws Exception { File file = new File(parentPath + File.separator + filename);//创建一个文件,兼容WINDOWS和LINUXMap<String, String> metadata = new LinkedHashMap<>();metadata.put("代理商编号,5000", "AGENT_NO");metadata.put("状态,5000", "statusName");metadata.put("结算金额,3500", "SETTLE_AMOUNT");metadata.put("结算费率,3000", "SETTLE_RATE");metadata.put("结算手续费,4000", "SETTLE_FEE");metadata.put("结算时间,5000", "SETTLE_TIME");metadata.put("创建时间,5000", "CREATE_TIME");metadata.put("开户卡号,7000", "ACCOUNT_NO");metadata.put("提现金额,5000", "CASH_AMOUNT");FileOutputStream os = new FileOutputStream(file);generateExcel(metadata, list).write(os);os.close();return file;}
2.
/** * 生成excel * @param metadata 所需要的元数据的LinkedHashMap,格式如下:{"col1Title.col1Width": "field1", "col2Title.col2Width": "field2",...} * @param data 需要用excel展示的数据 * @return */private static HSSFWorkbook generateExcel(Map<String, String> metadata, List<Map<String, Object>> data) {int rowIndex = 0, colIndex = 0;HSSFWorkbook wb = new HSSFWorkbook();// 创建一个Excel文件 HSSFSheet sheet = wb.createSheet();//创建一个Excel的Sheet(表格)// 普通单元格样式HSSFCellStyle commCellStyle = wb.createCellStyle();// 生成一个样式commCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中 // 金额单元格样式HSSFCellStyle amountCellStyle = wb.createCellStyle();amountCellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00"));amountCellStyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT);// 设置第一行列头HSSFRow row = sheet.createRow(rowIndex ++);//创建第一行 for (String aCol : metadata.keySet()) {String[] titleCfg = aCol.split(",");HSSFCell cell = row.createCell(colIndex);// 创建第一列 cell.setCellStyle(commCellStyle);cell.setCellValue(titleCfg[0]);sheet.setColumnWidth(colIndex++, Integer.valueOf(titleCfg[1]));//设置列宽}// 填充数据for (Map<String, Object> aRow : data) {row = sheet.createRow(rowIndex ++);colIndex = 0;for (String field : metadata.values()) {HSSFCellStyle cellStyle = commCellStyle;HSSFCell cell = row.createCell(colIndex++);Object val = aRow.get(field);if (null == val) {cell.setCellValue("--");} else if (val instanceof Date) {cell.setCellValue(DateFormatUtils.format((Date) val, "yyyy-MM-dd HH:mm:ss"));} else if (val instanceof Number) {cell.setCellValue(Double.valueOf(val.toString()));cellStyle = amountCellStyle;} else {cell.setCellValue(val.toString());}cell.setCellStyle(cellStyle);}}return wb;}
3.FileUtils.Download
/** * 下载指定文件 * * @param result * @param response * @throws IOException */public static void Download(File result, HttpServletResponse response)throws IOException {InputStream fis = new BufferedInputStream(new FileInputStream(result));byte[] buffer = new byte[fis.available()];fis.read(buffer);fis.close();response.reset(); // 清空输出流response.setHeader("Content-disposition", "attachment;filename="+ new String(result.getName().getBytes("GBK"), "ISO8859-1"));response.setContentType("application/msexcel;charset=UTF-8");// 定义输出类型response.addHeader("Content-Length", "" + result.length());OutputStream toClient = new BufferedOutputStream(response.getOutputStream());response.setContentType("application/octet-stream");toClient.write(buffer);toClient.flush();toClient.close();}
1 0
- dbutils的导出下载功能(excel)
- Apache-POI实现Excel文档的导出下载功能
- Apache-POI实现Excel文档的导出下载功能
- excel的下载导出
- poi的导出excel(直接下载)
- easyUI导出excel文件 提供下载功能
- Java的Excel导出功能
- excel文件的导出功能
- tp5的excel导出功能
- Excel的导出与下载
- nodejs Excel的下载导出
- excel的导出和下载
- excel导出带图片的导出功能
- asp.net下载Excel模板和导入导出Excel功能
- dbutils的下载方法
- SpringMVC的Excel导出(弹框提示下载)
- Springboot/SpringMVC+POI 实现Excel导出功能(点击下载方式实现)
- java的Excel的导入导出功能
- java8 groupingby
- float浮动的消除2
- 出现Immutable bitmap passed to Canvas constructor
- 适配器设计模式
- leetcode--1. Two Sum
- dbutils的导出下载功能(excel)
- 常量成员函数
- js中的 toUpperCase()中开头的u和c一定要大些
- linux服务器下添加用户和删除用户的命令
- Linux中命令的缩写
- CentOS6.5安装JDK
- Python:文件的读取、创建、追加、删除、清空
- Linux下Nginx+Tomcat整合的安装与配置
- JS 匿名函数