利用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') >= #{consume_start}
</if>
<!--消费日期结束-->
<if test="consume_end != null and consume_end != ''">
and DATE_FORMAT(consume_date,'%Y-%m-%d') <= #{consume_end}
</if>
</select>
以上为完整实现代码,仅供参考学习,
本文为作者原创作品,如转载请注明出处
谢谢~