jsp页面:
//打印
function onPrint() {
$.post("zwfw/workResult/spWorkListGztz/getPrintContext", {
name : $("#name").val(),
baseOrgName : $("#baseOrgName").val()
}, function(data) {
var Html = data.HMML;
document.getElementById("Print2").innerHTML = Html;
document.getElementById("Main").style.display = "none";
document.getElementById("Print").style.display = "block";
window.print();
document.getElementById("Main").style.display = "block";
document.getElementById("Print").style.display = "none";
});
}
//导出Excel表格,mytable参数是待导出的table的id
function tabletoexcel(mytable) {
$
.post(
"zwfw/workResult/spWorkListGztz/getPrintContext",
{
name : $("#name").val(),
baseOrgName : $("baseOrgName").val()
},
function(data) {
var Html = data.html;
document.getElementById("Print2").innerHTML = Html;
// getExplore()返回1,说明是不是Google Chrome、Firefox、Opera、Safari,那么就认为是IE了。(网上流传的判断IE的js代码好多在Win7无法使用。。。。。。
if (getExplorer() == 1) {
//是IE的话,就调用toExcel()方法来导出Excel表格,不依赖微软的Excel产品。(toExcel()方法的定义见下面)
toExcel(mytable, '');
return;
}
// 不是IE的话就调用下面的代码导出Excel文件
//获得id为mytable的table的html元素
var table = document.getElementById(mytable);
// 克隆(复制)此table元素,这样对复制品进行修改(如添加或改变table的标题等),导出复制品,而不影响原table在浏览器中的展示。
table = table.cloneNode(true);
//下面五行代码就是用来改变table中的某些信息的,不需要的话可以注释,或修改。
var caption_orig = table
.getElementsByTagName("caption");
$(caption_orig).text(name);
var th_first_ele = table.getElementsByTagName("th")[0];
// 下面的代码才是真正用来将html table导出Excel表格(我从stackoverflow上看到的,修改了一点点,不会再有中文乱码问题了。)
var uri = 'data:application/vnd.ms-excel;base64,';
template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><?xml version="1.0" encoding="UTF-8" standalone="yes"?><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table style="vnd.ms-excel.numberformat:@">{table}</table></body></html>';
base64 = function(s) {
return window
.btoa(unescape(encodeURIComponent(s)));
};
format = function(s, c) {
return s.replace(/{(\w+)}/g, function(m, p) {
return c[p];
});
};
if (!table.nodeType)
table = document.getElementById(table);
var ctx = {
worksheet : name || 'Worksheet',
table : table.innerHTML
};
window.location.href = uri
+ base64(format(template, ctx));
});
}
// 判断浏览器类型 返回1表示IE
function getExplorer() {
var explorer = window.navigator.userAgent;
if (explorer.indexOf("MSIE") >= 0) {
return 1;
} else if (explorer.indexOf("Firefox") >= 0) {
return 0;
} else if (explorer.indexOf("Chrome") >= 0) {
return 0;
} else if (explorer.indexOf("Opera") >= 0) {
return 0;
} else if (explorer.indexOf("Safari") >= 0) {
return 0;
} else {
return 1;
}
}
// 下面的所有函数代码都是为了在IE上能导出Excel表格(不会出现js栈溢出等eggache的problem。。IE is so eggache!!!!
function toExcel(inTblId, inWindow) {
try {
var allStr = "";
var curStr = "";
if (inTblId != null && inTblId != "" && inTblId != "null") {
curStr = getTblData(inTblId, inWindow);
}
if (curStr != null) {
allStr += curStr;
} else {
alert("您要导出的表不存在!");
return;
}
var fileName = getExcelFileName();
doFileExport(fileName, allStr);
} catch (e) {
alert("导出发生异常:" + e.name + "->" + e.description + "!");
}
}
function getTblData(inTbl, inWindow) {
var caption_str = "";
var rows = 0;
var tblDocument = document;
if (!!inWindow && inWindow != "") {
if (!document.all(inWindow)) {
return null;
} else {
tblDocument = eval(inWindow).document;
}
}
var curTbl = tblDocument.getElementById(inTbl).cloneNode(true);
if (curTbl.rows.length > 65000) {
alert('源行数不能大于65000行');
return false;
}
if (curTbl.rows.length <= 1) {
alert('数据源没有数据');
return false;
}
var outStr = caption_str + " \n";
if (curTbl != null) {
for (var j = 0; j < curTbl.rows.length; j++) {
for (var i = 0; i < curTbl.rows[j].cells.length; i++) {
if (i == 0 && rows > 0) {
outStr += " \t";
rows -= 1;
}
var tc = curTbl.rows[j].cells[i];
if (j > 0 && tc.hasChildNodes()
&& tc.firstChild.nodeName.toLowerCase() == "input") {
if (tc.firstChild.type.toLowerCase() == "checkbox") {
if (tc.firstChild.checked == true) {
outStr += "是" + "\t";
} else {
outStr += "否" + "\t";
}
}
} else {
outStr += " " + curTbl.rows[j].cells[i].innerText
+ "\t";
}
if (curTbl.rows[j].cells[i].colSpan > 1) {
for (var k = 0; k < curTbl.rows[j].cells[i].colSpan - 1; k++) {
outStr += " \t";
}
}
if (i == 0) {
if (rows == 0 && curTbl.rows[j].cells[i].rowSpan > 1) {
rows = curTbl.rows[j].cells[i].rowSpan - 1;
}
}
}
outStr += "\r\n";
}
} else {
outStr = null;
alert(inTbl + "不存在!");
}
return outStr;
}
function getExcelFileName() {
var d = new Date();
var curYear = d.getYear();
var curMonth = "" + (d.getMonth() + 1);
var curDate = "" + d.getDate();
var curHour = "" + d.getHours();
var curMinute = "" + d.getMinutes();
var curSecond = "" + d.getSeconds();
if (curMonth.length == 1) {
curMonth = "0" + curMonth;
}
if (curDate.length == 1) {
curDate = "0" + curDate;
}
if (curHour.length == 1) {
curHour = "0" + curHour;
}
if (curMinute.length == 1) {
curMinute = "0" + curMinute;
}
if (curSecond.length == 1) {
curSecond = "0" + curSecond;
}
var fileName = "公章使用台帐" + curYear + curMonth + curDate + curHour
+ curMinute + curSecond + ".xls";
return fileName;
}
function doFileExport(inName, inStr) {
var xlsWin = null;
if (!!document.all("glbHideFrm")) {
xlsWin = glbHideFrm;
} else {
var width = 1;
var height = 1;
var openPara = "left=" + (window.screen.width / 2 + width / 2)
+ ",top=" + (window.screen.height + height / 2)
+ ",scrollbars=no,width=" + width + ",height=" + height;
xlsWin = window.open("", "_blank", openPara);
}
xlsWin.document.write(inStr);
xlsWin.document.close();
xlsWin.document.execCommand('Saveas', true, inName);
xlsWin.close();
}
//打印
function onPrint() {
$.post("zwfw/workResult/spWorkListGztz/getPrintContext", {
name : $("#name").val(),
baseOrgName : $("#baseOrgName").val()
}, function(data) {
var Html = data.HMML;
document.getElementById("Print2").innerHTML = Html;
document.getElementById("Main").style.display = "none";
document.getElementById("Print").style.display = "block";
window.print();
document.getElementById("Main").style.display = "block";
document.getElementById("Print").style.display = "none";
});
}
//导出Excel表格,mytable参数是待导出的table的id
function tabletoexcel(mytable) {
$
.post(
"zwfw/workResult/spWorkListGztz/getPrintContext",
{
name : $("#name").val(),
baseOrgName : $("baseOrgName").val()
},
function(data) {
var Html = data.html;
document.getElementById("Print2").innerHTML = Html;
// getExplore()返回1,说明是不是Google Chrome、Firefox、Opera、Safari,那么就认为是IE了。(网上流传的判断IE的js代码好多在Win7无法使用。。。。。。
if (getExplorer() == 1) {
//是IE的话,就调用toExcel()方法来导出Excel表格,不依赖微软的Excel产品。(toExcel()方法的定义见下面)
toExcel(mytable, '');
return;
}
// 不是IE的话就调用下面的代码导出Excel文件
//获得id为mytable的table的html元素
var table = document.getElementById(mytable);
// 克隆(复制)此table元素,这样对复制品进行修改(如添加或改变table的标题等),导出复制品,而不影响原table在浏览器中的展示。
table = table.cloneNode(true);
//下面五行代码就是用来改变table中的某些信息的,不需要的话可以注释,或修改。
var caption_orig = table
.getElementsByTagName("caption");
$(caption_orig).text(name);
var th_first_ele = table.getElementsByTagName("th")[0];
// 下面的代码才是真正用来将html table导出Excel表格(我从stackoverflow上看到的,修改了一点点,不会再有中文乱码问题了。)
var uri = 'data:application/vnd.ms-excel;base64,';
template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><?xml version="1.0" encoding="UTF-8" standalone="yes"?><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table style="vnd.ms-excel.numberformat:@">{table}</table></body></html>';
base64 = function(s) {
return window
.btoa(unescape(encodeURIComponent(s)));
};
format = function(s, c) {
return s.replace(/{(\w+)}/g, function(m, p) {
return c[p];
});
};
if (!table.nodeType)
table = document.getElementById(table);
var ctx = {
worksheet : name || 'Worksheet',
table : table.innerHTML
};
window.location.href = uri
+ base64(format(template, ctx));
});
}
// 判断浏览器类型 返回1表示IE
function getExplorer() {
var explorer = window.navigator.userAgent;
if (explorer.indexOf("MSIE") >= 0) {
return 1;
} else if (explorer.indexOf("Firefox") >= 0) {
return 0;
} else if (explorer.indexOf("Chrome") >= 0) {
return 0;
} else if (explorer.indexOf("Opera") >= 0) {
return 0;
} else if (explorer.indexOf("Safari") >= 0) {
return 0;
} else {
return 1;
}
}
// 下面的所有函数代码都是为了在IE上能导出Excel表格(不会出现js栈溢出等eggache的problem。。IE is so eggache!!!!
function toExcel(inTblId, inWindow) {
try {
var allStr = "";
var curStr = "";
if (inTblId != null && inTblId != "" && inTblId != "null") {
curStr = getTblData(inTblId, inWindow);
}
if (curStr != null) {
allStr += curStr;
} else {
alert("您要导出的表不存在!");
return;
}
var fileName = getExcelFileName();
doFileExport(fileName, allStr);
} catch (e) {
alert("导出发生异常:" + e.name + "->" + e.description + "!");
}
}
function getTblData(inTbl, inWindow) {
var caption_str = "";
var rows = 0;
var tblDocument = document;
if (!!inWindow && inWindow != "") {
if (!document.all(inWindow)) {
return null;
} else {
tblDocument = eval(inWindow).document;
}
}
var curTbl = tblDocument.getElementById(inTbl).cloneNode(true);
if (curTbl.rows.length > 65000) {
alert('源行数不能大于65000行');
return false;
}
if (curTbl.rows.length <= 1) {
alert('数据源没有数据');
return false;
}
var outStr = caption_str + " \n";
if (curTbl != null) {
for (var j = 0; j < curTbl.rows.length; j++) {
for (var i = 0; i < curTbl.rows[j].cells.length; i++) {
if (i == 0 && rows > 0) {
outStr += " \t";
rows -= 1;
}
var tc = curTbl.rows[j].cells[i];
if (j > 0 && tc.hasChildNodes()
&& tc.firstChild.nodeName.toLowerCase() == "input") {
if (tc.firstChild.type.toLowerCase() == "checkbox") {
if (tc.firstChild.checked == true) {
outStr += "是" + "\t";
} else {
outStr += "否" + "\t";
}
}
} else {
outStr += " " + curTbl.rows[j].cells[i].innerText
+ "\t";
}
if (curTbl.rows[j].cells[i].colSpan > 1) {
for (var k = 0; k < curTbl.rows[j].cells[i].colSpan - 1; k++) {
outStr += " \t";
}
}
if (i == 0) {
if (rows == 0 && curTbl.rows[j].cells[i].rowSpan > 1) {
rows = curTbl.rows[j].cells[i].rowSpan - 1;
}
}
}
outStr += "\r\n";
}
} else {
outStr = null;
alert(inTbl + "不存在!");
}
return outStr;
}
function getExcelFileName() {
var d = new Date();
var curYear = d.getYear();
var curMonth = "" + (d.getMonth() + 1);
var curDate = "" + d.getDate();
var curHour = "" + d.getHours();
var curMinute = "" + d.getMinutes();
var curSecond = "" + d.getSeconds();
if (curMonth.length == 1) {
curMonth = "0" + curMonth;
}
if (curDate.length == 1) {
curDate = "0" + curDate;
}
if (curHour.length == 1) {
curHour = "0" + curHour;
}
if (curMinute.length == 1) {
curMinute = "0" + curMinute;
}
if (curSecond.length == 1) {
curSecond = "0" + curSecond;
}
var fileName = "公章使用台帐" + curYear + curMonth + curDate + curHour
+ curMinute + curSecond + ".xls";
return fileName;
}
function doFileExport(inName, inStr) {
var xlsWin = null;
if (!!document.all("glbHideFrm")) {
xlsWin = glbHideFrm;
} else {
var width = 1;
var height = 1;
var openPara = "left=" + (window.screen.width / 2 + width / 2)
+ ",top=" + (window.screen.height + height / 2)
+ ",scrollbars=no,width=" + width + ",height=" + height;
xlsWin = window.open("", "_blank", openPara);
}
xlsWin.document.write(inStr);
xlsWin.document.close();
xlsWin.document.execCommand('Saveas', true, inName);
xlsWin.close();
}
<div class="form-group">
<button class="btn btn-info" id="btnShowAll" type="button"
onclick="onPrint()">打印</button>
</div>
<div class="form-group">
<button class="btn btn-info" id="btnShowAll" type="button"
onclick="tabletoexcel('grdtable')">导出</button>
</div>
</div>
<div class="col-sm-12">
<table id="grid"></table>
<div id="pager" style="height: 35px;"></div>
</div>
<div id="Print" style="display: none">
<table width="100%">
<tr>
<td style="font-size: 25px; font-weight: bold; text-align: center;"
colspan="9">公章使用台帐</td>
</tr>
</table>
<div id="Print2"></div>
</div>
controller:
@ResponseBody
@RequestMapping(value = "/getPrintContext", method = RequestMethod.POST)
public Map<String, Object> getPrintContext(){
Map<String, Object> map = new HashMap<String, Object>();
List<SpWorkListGztz> list = spWorkListGztzService.list();
String _html = "<table style=\"width:100%\" class=\"grdtable\"id=\"grdtable\"><tr><td width=\"10%\"></td><td width=\"10%\">日期</td><td width=\"10%\">姓名</td><td width=\"10%\">单位名称</td><td width=\"10%\">材料份数</td><td width=\"10%\">批准人</td><td width=\"10%\">个人缴费</td><td
width=\"10%\">受理人</td><td width=\"10%\">备注</td></tr>";
for(int i = 0; i < list.size(); i++){
SpWorkListGztz spWorkListGztz = list.get(i);
_html+="<tr><td>"+(i*1)+"</td>";
_html+="<td>"+spWorkListGztz.getRecordInfo().getCreatedAt()+"</td>";
_html+="<td>"+spWorkListGztz.getName()+"</td>";
_html+="<td>"+spWorkListGztz.getBaseOrgName()+"</td>";
_html+="<td>"+spWorkListGztz.getMaterialsCount()+"</td>";
_html+="<td>"+spWorkListGztz.getApprover()+"</td>";
_html+="<td>"+spWorkListGztz.getReceiver()+"</td>";
_html+="<td>"+spWorkListGztz.getDescr()+"</td>";
}
_html+="</table>";
map.put("html", _html);
return map;