首页 > 解决方案 > html2xlsx - 如何使用 jQuery 选择表格

问题描述

我正在使用html2xlsx插件将 html 表导出到 xlsx 文件。它适用于上面链接中包含的代码(缩短):

htmlTo(`
  <style type="text/css">
    table td {
      color: #666;
      height: 20px;
      background-color: #f1f1f1;
      border: 1px solid #eee;
    }
  </style>
  <table>
    <tr>
      <td>foo</td>
      <td>bar</td>
    </tr>
    <tr>
      <td>hello</td>
      <td>world</td>
    </tr>
    <tr>
      <td type="date">2013-01-12T12:34:56+08:00</td>
      <td type="datetime">2013-01-12T12:34:56+08:00</td>
    </tr>
  </table>
`, (err, file) => {
  if (err) return console.error(err);

  file.saveAs()
    .pipe(fs.createWriteStream('test.xlsx'))
    .on('finish', () => console.log('Done.'));
});

但是,我想使用 jQuery 来选择我的表格,而不是编写 html 代码。我尝试过htmlTo($(".table").html(), ...)htmlTo(`$(".table").html()`, ...)甚至使用将表格 html 转换为字符串,.toString()但没有一个有效,并且 excel 给出错误。

有什么建议么?

另外,我正在使用电子。

更新

该问题似乎与字符串格式有关。这个有效:

tabul = '<tr><td>Hello</td></tr>'
htmlTo(`'<table>'` + tabul + `'</table>'`, ...)

但这不会:

tabledata = $(".table").html()
htmlTo(`'<table>'` + tabledata.toString() + `'</table>'`, ...) //excluding toString doesn't work either

更新 2

表格中的图像还有另一个问题。该插件无法将图像标签转换为数据,或者我不知道如何。

标签: jquery

解决方案


$(".table").html()只返回表格的内容,而不是<table>标签本身。要获取包含该<table>标记的 HTML,您可以使用标准 JavaScript.outerHTML属性。索引一个 jQuery 对象会返回相应的 DOM 元素,因此您可以使用

htmlTo($(".table")[0].outerHTML)

推荐阅读