使用JavaScript构建XLSX文件

时间:2014-01-21 16:47:02

标签: javascript excel xlsx

我尝试使用JavaScript使用一些数据库查询结果构建XLSX文件。我必须使用JavaScript作为服务器后端只提供一个JavaScript接口来使用(它不像jQuery)。现在,我似乎发现了实际创建base64编码数据以写入文件的内容(服务器接口提供了使用base64编码字符串创建文件并定义文件类型的API)。 XLSX.js看起来很适合这个目的,因为它看起来像是可以读取某种形式的JS对象并将其转换为base64字符串。但是,我不清楚如何首先生成工作表XML数据,或者我想如何构建一个有代表性的JS对象。如果我甚至可以找到有关结构化的信息,那么我可以找到的唯一有用的信息并不能真正让我知道如何构建它。我找到的大多数是关于阅读文件,而不是创建文件。此外,我认为我发现了一些简单的实现方法,但随后它们变成了一堆乱七八糟的库,我迷失了,试图了解哪些文件实际上是必要的,以及如何正确地将它们包含在工作中。

3 个答案:

答案 0 :(得分:2)

您可以使用Alasql库将数据从js导出为XLS,XLSX和CSV格式。

例如,我们想通过单击按钮将我们保存在测试变量中的数据写入XLSX文件中。要执行此操作,只需使用以下步骤:

1-在页面中包含以下文件:

 <script src="http://alasql.org/console/alasql.min.js"></script> 
 <script src="http://alasql.org/console/xlsx.core.min.js"></script> 

2- So然后在控制器中创建一个函数,将测试数组保存为xlsx文件:

function saveAsXlsx(){
   alasql('SELECT * INTO XLSX("output.xlsx",{headers:true}) FROM ?',[test]);
}

所以我们将变量测试中的数据保存到一个文件中,我们在这里将其命名为output.xlsx。

3-最后一部分是最简单的部分。单击按钮运行该功能:

 <button onclick="saveAsXlsx()" >Save as XLSX</button>

答案 1 :(得分:1)

我已经放弃了尝试在我正在使用的环境中创建XLSX文档。我已经提供了一种方法,使用Excel 2003的XML格式创建一个XLS文件,除了尝试打开以这种方式生成的文件时发出警告,指出该文件的格式与扩展名指定的格式不同。除了那个警告,我已经能够创建在Excel中打开并且表现良好的可用文件。

我想也许我不得不为我未来的任何.NET项目留下生成XLSX文件。这种解决方案很糟糕,但感谢大家的回应。

答案 2 :(得分:-1)

Excel支持两种形式的XML文档作为输入。一个是ZIP存档,其中包含各种XML文档和其他数据。这是标准的XLSX文件格式。

第二种形式只是工作表数据本身作为XML文档。所以你只需要将XML创建为字符串。维基百科有一个example for the Excel XML format。您可以在“External links

下找到参考文档的链接

如果您使用此格式创建文件并将其另存为.xslx,那么Excel应该可以打开它。如果没有,请尝试.xsl扩展名。如果您无法正确格式化,请在Excel中执行此操作,保存并查看生成的文件。

我不确定XLSX.js会有多大帮助,因为它是一个依赖于jQuery和jszip等浏览器/客户端框架。 “base64 and back”选项是指将Excel工作表作为base64字符串添加到HTML文档。然后,框架可以打开此虚拟文件并进行检查。我认为这并不意味着生成Excel文件供下载。