使用JavaScript将HTML内容导出到Excel

3

我正在使用JavaScript将Html内容导出到Excel并下载。它可以正常工作,但我的要求是下载没有网格线的Excel,并且我想渲染出与浏览器中显示的Html相同的内容。有什么选项或建议可以在Excel中呈现没有网格线的Html内容吗?

以下是我的示例Html:

<div>
<div style="float:left">
NAME:some text
</div>
<div style="float:right">
Number:some number
</div>
</div>
<div>
<table>
  <tr>
    <th>Company</th>
    <th>Contact</th>
    <th>Country</th>
  </tr>
  <tr>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Germany</td>
  </tr>
  <tr>
    <td>Centro comercial Moctezuma</td>
    <td>Francisco Chang</td>
    <td>Mexico</td>
  </tr>
  <tr>
    <td>Ernst Handel</td>
    <td>Roland Mendel</td>
    <td>Austria</td>
  </tr>
  <tr>
    <td>Island Trading</td>
    <td>Helen Bennett</td>
    <td>UK</td>
  </tr>
  <tr>
    <td>Laughing Bacchus Winecellars</td>
    <td>Yoshi Tannamuri</td>
    <td>Canada</td>
  </tr>
  <tr>
    <td>Magazzini Alimentari Riuniti</td>
    <td>Giovanni Rovelli</td>
    <td>Italy</td>
  </tr>
</table>
</div>

我有一个 Excel 表格:enter image description here

我不想要那些网格线,同时我的内容也不是以 HTML 格式呈现的。

有没有办法在 JavaScript 中准备带有 HTML 数据但没有网格线的 Excel 表格呢?

2个回答

6
你只需要添加这个:
<meta http-equiv="content-type" content="text/plain; charset=UTF-8"/>

在文档的头部,它将按预期开始工作。
<script type="text/javascript">
var tableToExcel = (function() {
  var uri = 'data:application/vnd.ms-excel;base64,'
    , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>{table}</table></body></html>'
    , base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) }
    , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) }
  return function(table, name) {
    if (!table.nodeType) table = document.getElementById(table)
    var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
    window.location.href = uri + base64(format(template, ctx))
  }
})()
</script>

这里是演示链接。


嘿,感谢您的回复,现在它比以前好用了,但是A11单元格需要扩展到C11单元格,因为C单元格中的数据是最后一个。如果任何数据占用D单元格,则A单元格需要占用到D单元格。基本上需要看起来像Excel文档。 有没有办法应用内部或外部的CSS? - raviteja

0

谢谢您的回复,我该如何在我的Web应用程序中包含Apache POI?是否有任何JS文件? - raviteja
没有JS文件。这是一个基于Java的库。这需要在服务器端完成或通过小程序(几乎已经死亡)完成。 - Anurag Sinha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接