在尝试将html字符串转换为csv格式时出现问题,以便我可以创建新的csv blob对象并从IE & Edge中的网页中打开该对象。使用javascript将html字符串转换为csv格式
我发现了一个函数来将表格对象转换为csv格式,但不幸的是我需要传递这个字符串,而不是对象。
下面是表对象CSV方法:
function (table) {
var slice = Array.prototype.slice;
return slice.call(table.rows).map(function (row) {
return slice.call(row.cells).map(function (cell) {
return '"t"'.replace("t", cell.textContent);
}).join(",");
}).join("\r\n");
}
的问题是需要在显示之前格式化我希望在CSV文件中显示。因此,如果我只是将该表格对象显示在页面上,那么csv将具有比所需更多的数据。 当单击导出按钮时,我有一个方法将表格格式化,并返回表格的html字符串以显示为csv。 但我不知道如何将该字符串转换为csv格式,无法在任何地方找到此示例。
>修改1
Name | Time allowed | Best score | Attempts |
0
secs
|
33% |
1 | |
0
secs
|
100% |
18 | |
0
secs
|
100% |
4 |
上述字符串使用铬时传递给
document.open("txt/html", "replace");
iframe.document.write(sHTML);
了在铬/ Firefox中呈现为csv
HTML字符串/ Firefox和呈现如下:
我不能让document.open与Edge一起工作,所以我使用Blob方法。
var csv = $scope.tbl2csv(oTable[0]);
// Create a CSV Blob
var blob = new Blob([ csv ], { type: "text/csv"});
if (navigator.msSaveOrOpenBlob) {
// Works for Internet Explorer and Microsoft Edge
navigator.msSaveOrOpenBlob(blob, "Assessment.csv");
}
这适用于边缘,如所需要的表中的,以CSV开口的出口在Excel中,问题是,表对象转换成CSV格式不一样的HTML字符串由铬呈现/ Firefox浏览器。 所以我的要求是找到一种方法将该字符串转换为csv格式。
+0
对待HTML的唯一正确方法是将其发送到HTML解析器。你知道该怎么做。 –
+0
不,这不是一个CSV生成器,即使它大部分时间生成有效的CSV。 –
+0
@JanDvorak为回应。不幸的是,我不知道该怎么做让我的html字符串(这是我想要显示为csv的表格)变成csv格式。任何建议不胜感激。 –