【导出】Java实现从指定JSP页面导出数据到Excel表格

利用Java+JavaScript从页面导出数据到Excel表格

先来几张效果图,再贴代码,

第一步点击导出按钮

第二步点击确认

 最后点击左下角表格打开Excel,查看导出数据是否完整

具体实现如下

JavaScript核心代码:

/*************************************** 导出Excel ******************************/
			 // 导出数据
		    function exportFixedExpenditureInfo(){
		    	swal({
		            title: "是否确认导出资产信息",
		            text: "(注意:请确定要导出的资产信息,导出的内容为当前列表的所有搜索结果)",
		            type: "info",
		            showCancelButton: true,
		            confirmButtonColor: "#5cb85c",
		            confirmButtonText: "确认",
		            cancelButtonText: "取消",
		            closeOnConfirm: true,
		            closeOnCancel: true
		        },
		        function(isConfirm) {
		            if (isConfirm) {
		            	perExportData();
		            }
		        });
		    }
		    
		    function perExportData() {
		    	// 获取展示的列 
		        var columnList = $("#table").bootstrapTable('getVisibleColumns');
		        var data = {};
		        var consume_start = $("#consume_start").val();
		        var consume_end = $("#consume_end").val();
		        var columnsArr = new Array();
		        var columnNamesArr = new Array();
		        // 跳过选择框
		        for (var i = 1; i < columnList.length; i++) {
		            columnsArr.push(columnList[i].field.trim());
		            columnNamesArr.push(columnList[i].title.trim());
		        }
		        data.columns = columnsArr.join(',');
		        data.columnNames = columnNamesArr.join(',');

		        if ( !! consume_start) {
		            data.consume_start = consume_start;
		        }
		        if ( !! consume_end) {
		            data.consume_end = consume_end;
		        }
		        postDownLoadFile({
		            url: 'FixedassetsController/FixedExpenditureController_exportFile.do',
		            data: data,
		            method: 'post'
		        });
		    }

		    function postDownLoadFile(options) {
		        var config = $.extend(true, {
		            method: 'post'
		        },
		        options);
		        var $iframe = $('<iframe id="down-file-iframe" />');
		        var $form = $('<form target="down-file-iframe" method="' + config.method + '" />');
		        $form.attr('action', config.url);
		        for (var key in config.data) {
		            $form.append('<input type="hidden" name="' + key + '" value="' + config.data[key] + '" />');
		        }
		        $iframe.append($form);
		        $(document.body).append($iframe);
		        $form[0].submit();
		        $iframe.remove();
		    }

Controller层核心代码:

/**
	 * 固定支出导出数据
	 * @param resp
	 * @author zxwu
	 * @throws Exception
	 */
	@RequestMapping(value="/FixedExpenditureController_exportFile")
	@ResponseBody
	public String exportDataFixedExpenditure(HttpServletResponse resp) throws Exception {
		PageData param = getPageData();
		param.put("orgId", session.getAttribute("org_id"));
		
		String columnsStr = param.getString("columns");
		String[] columns = columnsStr.split(",");
		if (columns.length == 0) {
			return "文件导出失败";
		}
		String columnNamesStr = param.getString("columnNames");
		String[] columnNames = columnNamesStr.split(",");
		if (columnNames.length == 0 || columns.length != columnNames.length) {
			return "文件导出失败";
		}
		
		// 获取数据
		List<PageData> classList = fixedassetsFacade.listFixedExpenditureAll(param);
		List<String> excelTitles = new ArrayList<>(); // 导出的文件表头
		
		// 组合 Excel 头
		for (String name : columnNames) {
			excelTitles.add(name);
		}
		
		ExportExcel excel = new ExportExcel(null, excelTitles);
		
		// 组合表格数据
		for (PageData classInfo : classList) {
			Row row = excel.addRow(); // 添加一行
			for (int i=0; i<columns.length; i++) {
				Cell cell = row.createCell(i);
				Object data = classInfo.get(columns[i]);
				if (data == null) {
					cell.setCellValue("--");
				} else {
					cell.setCellValue(data + "");
				}
			}
		}
		excel.write(resp, "固定支出表" + FileNameUtil.getName() + ".xlsx");
		excel.dispose();
		return "文件下载";
	}

service层及实现类:

	public List<PageData> listFixedExpenditureAll(PageData pd) throws Exception {
		List<PageData> listPage = (List<PageData>)dao.findForList("FixedassetsMapper.listFixedExpenditure", pd);
		return listPage;
	}

mapper文件 :

 <!-- 固定支出导出 -->
	<select id="listFixedExpenditure" parameterType="pd" resultType="pd">
		SELECT 
			  id,
			  capital_explain,
			  pay_money,
			  DATE_FORMAT(consume_date,'%Y-%m-%d') consume_date,
			  sts,
			  entry_clerk,
			  DATE_FORMAT(update_time,'%Y-%m-%d') update_time,
			  remark
		FROM 
		     tb_fixed_expenditure 
 	    WHERE
			 sts = 1
	    and  org_id = #{orgId}
		    <!--消费日期开始  -->
			<if test="consume_start != null and consume_start != ''">
				and DATE_FORMAT(consume_date,'%Y-%m-%d') &gt;= #{consume_start}
			</if>
			<!--消费日期结束-->
			<if test="consume_end != null and consume_end != ''">
				and DATE_FORMAT(consume_date,'%Y-%m-%d')  &lt;= #{consume_end}
			</if>	 
	</select>

以上为完整实现代码,仅供参考学习,

 本文为作者原创作品,如转载请注明出处

谢谢~

猜你喜欢

转载自blog.csdn.net/zxwu_1993/article/details/84979223