gpt4 book ai didi

javascript - 将 HTML 表格导出到 Excel 时格式化超链接

转载 作者:可可西里 更新时间:2023-11-01 13:31:06 26 4
gpt4 key购买 nike

我正在使用 JavaScript 下载 HTML 表格内容到 Excel,如 Export HTML table to Excel its downloading table contents to the Excel 中所述.

在我的表中,一列中有链接。下载时,该列内容在 Excel 工作表中显示为超链接。我想在没有这些链接的情况下将表格导出到 Excel(只是纯文本)。

有办法吗?

最佳答案

您必须用文本替换所有超链接。

克隆要导出的表

table = $('#'+tableName).clone();

用对应的span替换 anchor 标签

 var sp1 = document.createElement("span");
var sp1_content = document.createTextNode($(hyperLinks[i]).text());
sp1.appendChild(sp1_content);
var sp2 = hyperLinks[i];
var parentDiv = sp2.parentNode;
parentDiv.replaceChild(sp1, sp2);

你可以找到here有关更换节点的详细信息。

使用 Stackoverflow answer 中的代码导出


这是片段或 PEN

var tmp;
function strip(html) {
tmp = document.createElement("DIV");
tmp.innerHTML = html;
console.log(tmp.innerText);
console.log(tmp.textContent);

return tmp.textContent || tmp.innerText || "";
}

var tableToExcel = (function() {
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><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]--></head><body><table>{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];
})
}
return function(table, name, filename) {
if (!table.nodeType)

/*Clone the table that is to be exported*/
table = $('#'+table).clone();



var hyperLinks = table.find('a');



for (i = 0; i < hyperLinks.length; i++) {

//hyperLinks[i] = $(hyperLinks[i]).text();
var sp1 = document.createElement("span");

// give it an id attribute called 'newSpan'
sp1.setAttribute("id", "newSpan");

// create some content for the new element.
var sp1_content = document.createTextNode($(hyperLinks[i]).text());
console.log(sp1_content);
// apply that content to the new element
sp1.appendChild(sp1_content);

// build a reference to the existing node to be replaced
var sp2 = hyperLinks[i];
var parentDiv = sp2.parentNode;

// replace existing node sp2 with the new span element sp1
parentDiv.replaceChild(sp1, sp2);
}



var ctx = {
worksheet: name || 'Worksheet',
table: table[0].innerHTML
}


document.getElementById("dlink").href = uri + base64(format(template, ctx));
document.getElementById("dlink").download = filename;
document.getElementById("dlink").click();

}
})()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a id="dlink" style="display:none;"></a>

<table name="tablename" id="tablename" border="1">
<tr>
<td>1</td>
<td><a href="http://google.com">google</a></td>
</tr><tr>
<td>2</td>
<td><a href="http://microsoft.com">microsoft</a></td>
</tr><tr>
<td>3</td>
<td><a href="http://amazon.com">amazon</a></td>
</tr>
</table>

<input type="button" onclick="tableToExcel('tablename', 'name', 'myfile.xls')" value="Export to Excel">

关于javascript - 将 HTML 表格导出到 Excel 时格式化超链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29936055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com