HTML表到xlsx电子表格

时间:2017-01-20 20:12:29

标签: javascript html excel google-chrome-extension download

我正在构建一个chrome扩展程序,我需要下载一个使用xlsx扩展名创建的表。这是相关的代码:

HTML

<div class="tab">
<table class="sortable" id="mytab">
<tr class="visible">
  <th>Name</th>
  <th>Age</th>
</tr>
<tr id="t0">
  <td id="d0"></td>
  <td id="p0"></td>
</tr>
<!--Here are 299 other rows-->
<tr id="t300">
  <td id="d300"></td>
  <td id="p300"></td>
</tr>
</table>
</div>

该表包含300行数字ID,在.css文件中,我为每个单元格设置了display:none。 我使用for循环以dinamically方式添加内容,如果不是空的,则使单元格可见。这是填充表格检查数组名称年龄的js:

for(var i=0; i<301; i++){
  if ((names[i]!=undefined)&&(ages[i]!=undefined)){
      document.getElementById('t'+i).style.display="table-row";
      document.getElementById('d'+i).innerHTML=names[i];
      document.getElementById('d'+i).style.display="table-cell";
      document.getElementById('p'+i).innerHTML=ages[i];
      document.getElementById('p'+i).style.display="table-cell";

  }
  else break;
}

它完美无缺,但我现在需要让表格可下载。如果我使用右键单击+另存为...然后我将扩展名更改为.xlsx它会生成我想要的电子表格,虽然它会保存每个html标记并且它不实用。所以我想要一个简单的方法来右键单击并将纯valuse保存为xlsx表。我已经使用

创建了一个上下文菜单项
chrome.contextMenus.create({"title": "Save results", "onclick": download});

其中 download 是以下功能:

function download(){
  chrome.downloads.download({
  url: window.location.href,
  saveAs: true,
  filename: "Table.xlsx"
  });
}

但是,这样做只会保存表头,而不会添加任何值。所以我在stackoverflow和谷歌上查了一下,找到下载表格的方法。我发现的解决方案都没有帮助:

window.open('data:application/vnd.ms-excel,' + encodeURIComponent(document.getElementById('mytab').outerHTML));

这个返回一个没有扩展名的空白文件,我找到的许多其他解决方案也是如此。另外,我不希望它以CSV格式下载,而更喜欢使用vanilla javascript的解决方案。

我的问题是:有没有办法将我的表作为xlsx下载,只需点击菜单条目? 提前谢谢。

0 个答案:

没有答案