javascript - 在javascript中导出表时排除列
问题描述
有什么办法可以在将表导出到 excel 文件时排除特定列,我只想将 Firstname 和 Savings 排除到 excel 文件中。目前我只是从我的表中导出我的所有数据,但我想排除 Firstname 和 Savings 列,有没有专家可以提供帮助?
html
<button id='btnExport'>
Export To Excel
</button>
<table id='testExportId'>
<tr>
<th >Firstname</th>
<th >Lastname</th>
<th >Savings</th>
<th >wowww</th>
</tr>
<tr>
<td>Peter</td>
<td>Griffin</td>
<td>$100</td>
<td>$100</td>
</tr>
<tr>
<td>Lois</td>
<td>Griffin</td>
<td>$150</td>
<td>$100</td>
</tr>
<tr>
<td>Joe</td>
<td>Swanson</td>
<td>$300</td>
<td>$100</td>
</tr>
<tr>
<td>Cleveland</td>
<td>Brown</td>
<td>$250</td>
<td>$100</td>
</tr>
</table>
javascript
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#btnExport").click(
function () {
tableToExcel('testExportId','test','trys');
}
);
})
function getIEVersion()
// Returns the version of Windows Internet Explorer or a -1
// (indicating the use of another browser).
{
var rv = -1; // Return value assumes failure.
if (navigator.appName == 'Microsoft Internet Explorer') {
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
rv = parseFloat(RegExp.$1);
}
return rv;
}
function tableToExcel(table, sheetName, fileName) {
var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // If Internet Explorer
{
return fnExcelReport(table, fileName);
}
var uri = 'data:application/vnd.ms-excel;base64,',
templateData = '<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><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>{table}</table></body></html>',
base64Conversion = function (s) { return window.btoa(unescape(encodeURIComponent(s))) },
formatExcelData = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }
$("tbody > tr[data-level='0']").show();
if (!table.nodeType)
table = document.getElementById(table)
var ctx = { worksheet: sheetName || 'Worksheet', table: table.innerHTML }
var element = document.createElement('a');
element.setAttribute('href', 'data:application/vnd.ms-excel;base64,' +
base64Conversion(formatExcelData(templateData, ctx)));
element.setAttribute('download', fileName);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
$("tbody > tr[data-level='0']").hide();
}
function fnExcelReport(table, fileName) {
var tab_text = "<table border='2px'>";
var textRange;
if (!table.nodeType)
table = document.getElementById(table)
$("tbody > tr[data-level='0']").show();
tab_text = tab_text + table.innerHTML;
tab_text = tab_text + "</table>";
tab_text = tab_text.replace(/<A[^>]*>|<\/A>/g, "");//remove if u want links in your table
tab_text = tab_text.replace(/<img[^>]*>/gi, ""); // remove if u want images in your table
tab_text = tab_text.replace(/<input[^>]*>|<\/input>/gi, ""); // reomves input params
txtArea1.document.open("txt/html", "replace");
txtArea1.document.write(tab_text);
txtArea1.document.close();
txtArea1.focus();
sa = txtArea1.document.execCommand("SaveAs", false, fileName + ".xls");
$("tbody > tr[data-level='0']").hide();
return (sa);
}
</script>
解决方案
您可以在要排除的列中添加类“excludeExport”
<button id="btnExport">Export To Excel</button>
<table id="testExportId">
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th class="excludeExport">Savings</th>
<th>wowww</th>
</tr>
<tr>
<td>Peter</td>
<td>Griffin</td>
<td class="excludeExport">$100</td>
<td>$100</td>
</tr>
<tr>
<td>Lois</td>
<td>Griffin</td>
<td class="excludeExport">$150</td>
<td>$100</td>
</tr>
<tr>
<td>Joe</td>
<td>Swanson</td>
<td class="excludeExport">$300</td>
<td>$100</td>
</tr>
<tr>
<td>Cleveland</td>
<td>Brown</td>
<td class="excludeExport">$250</td>
<td>$100</td>
</tr>
</table>
并将 $(document).ready 替换为此
$(document).ready(function () {
$("#btnExport").click(function () {
var tempTable = $("#testExportId").html();
$("#testExportId .excludeExport").remove();
tableToExcel("testExportId", "test", "trys");
$("#testExportId").html(tempTable);
});
});
推荐阅读
- angular - Angular中matdialog中的路由
- java - 如何使用 Java 更新 png/jpg/tif 图像的元数据?
- vb.net - 如何在 vb.net 中创建快捷方式/热键?
- jquery - 如果 li 中包含某个类的元素,如何让 li 删除自身?
- c++ - c++ 链表不再占用 Ram 空间?
- calendar - 如何从输入类型日期的日历页脚中删除“今天”
- python - Plotly:如何在 Choropleth 地图上显示州线
- javascript - Chrome 和服务器之间的 QUIC 通信
- javascript - 如何将数组从 NodeJS 传递到 Python 脚本?
- rust - `push label` 推送 [label],而不是 label 的地址(Rust asm!)