【发布时间】:2020-08-17 15:13:01
【问题描述】:
我有一个 HTML 表格,它横跨行和列,看起来有点复杂。我需要一种在单击按钮时将此表导出到 CSV 文件的方法。
下面是表格的代码,
<table class="table table-bordered">
<thead class="thead-dark">
<tr>
<th scope="col">Fruit Name</th>
<th scope="col">Type</th>
<th scope="col" colspan="3">Features</th>
<th scope="col">Recommended Values</th>
</tr>
</thead>
<tbody ng-repeat="x in response">
<tr>
<th rowspan="6"><b>{{x.FruitName}}</b></th>
<td rowspan="6"><b>{{x.FruitType}}</b></td>
<td rowspan="3">Color</td>
<td>Outer </td>
<td><b>{{x.Outer}}</b></td>
<td>Green/Black</td>
</tr>
<tr>
<td>Inner</td>
<td><b>{{x.Inner}}</b></td>
<td>Red</td>
</tr>
<tr>
<td>Seed</td>
<td><b>{{x.Seed}}</b></td>
<td>Seedless</td>
</tr>
<tr>
<td rowspan="2">Water</td>
<td>Sweet</td>
<td><b>{{x.Sweet}}</b></td>
<td>80%</td>
</tr>
<tr>
<td>Sour</td>
<td><b>{{x.Sour}}</b></td>
<td>10%</td>
</tr>
<tr>
<td rowspan="1">Weight</td>
<td>Body Wt</td>
<td ><b>{{x.weight}}</b></td>
<td>500gm</td>
</tr>
</tbody>
我试过用这个,
function exportTableToCSV(filename) {
var csv = [];
var rows = document.querySelectorAll("table tr");
for (var i = 0; i < rows.length; i++) {
var row = [], cols = rows[i].querySelectorAll("td, th");
for (var j = 0; j < cols.length; j++)
row.push(cols[j].innerText);
csv.push(row.join(","));
}
downloadCSV(csv.join("\n"), filename);
}
function downloadCSV(csv, filename) {
var csvFile;
var downloadLink;
csvFile = new Blob([csv], {type: "text/csv"});
downloadLink = document.createElement("a");
downloadLink.download = filename;
downloadLink.href = window.URL.createObjectURL(csvFile);
downloadLink.style.display = "none";
document.body.appendChild(downloadLink);
downloadLink.click();
}
但是我得到的输出并不完全是我在图片中提到的。 如何按原样将 HTML 表格准确导入 CSV。 PS:甚至可以添加更多的跨行和列
【问题讨论】:
-
我遇到了同样的问题并使用了这个stackoverflow.com/a/65087980/4704080>
标签: javascript html css angularjs bootstrap-4