【发布时间】:2023-03-03 23:12:01
【问题描述】:
我正在尝试将包含下拉列表和注释字段的 HTML 表格保存到 Excel。
我可以很好地保存静态信息,但是评论(文本区域)和下拉列表(选择的值)没有遇到。
<!doctype html>
<head>
<meta charset='utf-8'>
<script>
function fnExcelReport(){
var tab_text="<table border='2px'><tr bgcolor='#87AFC6'>"; // bgcolor will give color to your first row
var textRange; var j=0;
tab = document.getElementById('tblData'); // id of table
var table = document.getElementById("tblData");
for(j = 0 ; j < tab.rows.length ; j++)
{
tab_text=tab_text+tab.rows[j].innerHTML+"</tr>";
}
tab_text=tab_text+"</table>";
//alert(tab_text);
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
var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // If Internet Explorer
{
txtArea1.document.open("txt/html","replace");
txtArea1.document.write(tab_text);
txtArea1.document.close();
txtArea1.focus();
sa=txtArea1.document.execCommand("SaveAs",true,"Say Thanks to Submit.xlsx");
}
else //other browser not tested on IE 11
sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text));
return (sa);
}
</script>
</head>
<body>
<table id="tblData">
<tr>
<th>Test</th>
<th>Comments</th>
<th>Pass or Fail</th>
</tr>
<tr>
<td>Test 1</td>
<td><textarea rows="2" cols="15" title="Enter comments if necessary" name="comment" placeholder="Comments" form="usrform"></textarea></td>
<td>
<select name="cars" autocomplete="off" class="passFail")">
<option name="default" value="default" selected="selected" disabled="disabled">Pass or Fail</option>
<option value="pass">Pass</option>
<option value="fail">Fail</option>
</select>
</td>
</tr>
<tr>
<td>Test 2</td>
<td><textarea rows="2" cols="15" title="Enter comments if necessary" name="comment" placeholder="Comments" form="usrform"></textarea></td>
<td>
<select name="cars" autocomplete="off" onchange="java_script_:show(this.options[this.selectedIndex].value)">
<option name="default" value="default" selected="selected" disabled="disabled">Pass or Fail</option>
<option value="pass">Pass</option>
<option value="fail">Fail</option>
</select>
</td>
</tr>
<tr>
<td>Test 3</td>
<td><textarea rows="2" cols="15" title="Enter comments if necessary" name="comment" placeholder="Comments" form="usrform"></textarea></td>
<td>
<select name="cars" autocomplete="off" onchange="java_script_:show(this.options[this.selectedIndex].value)">
<option name="default" value="default" selected="selected" disabled="disabled">Pass or Fail</option>
<option value="pass">Pass</option>
<option value="fail">Fail</option>
</select>
</td>
</tr>
</table>
<button id="btnExport" onclick="fnExcelReport('headerTable', 'test results');"> EXPORT </button>
</body>
</html>
我正在获取标题行和测试 1、Test2 和 Test3,但是在 cmets 和下拉列表的位置,我实际上在 Excel 中获取了注释字段和下拉列表,而不是在 HTML 中输入的值。
最好是逐个单元格地浏览表格并将其写入 Excel,还是逐列地处理第 2 列和第 3 列不同,因为我不会使用 .innerHTML?
【问题讨论】:
标签: javascript html excel