从Javascript变量创建xls或csv文件

时间:2011-09-21 23:56:28

标签: javascript activex export-to-excel export-to-csv

我有一个使用Javascript执行某些计算然后绘制数据的应用程序,但我想为用户添加选项,以便能够将数据实际下载到csv或xls文件中。

在Javascript(或其他一些方法)中是否有办法让用户按下按钮,然后它会提示他们输入要保存的文件名,然后它会创建逗号分隔或excel电子表格?

谢谢!

修改

感谢所有人的建议。希望我能把你们全部标记为答案,但是现在必须要做的事情

6 个答案:

答案 0 :(得分:4)

打开窗口并将csv写入其中并不困难。但我不知道javascript有任何改变Content-Type:标题的方法。如果没有它,它将不会提示保存或打开。

您需要服务器的帮助才能执行此操作。您可以使用表单变量将数据发送到服务器,并让服务器使用正确的标头Content-type: text/csv向后发送它,您可能还希望Content-Disposition:标头为您的文件命名。

答案 1 :(得分:1)

是的,但您也需要使用服务器端代码。使用JavaScript构建指向将csv数据作为附件流回的页面的链接。服务器输出应包含content-disposition标头attachment; filename="fileName.csv"

答案 2 :(得分:1)

不,您无法直接从JavaScript创建和/或保存文件。在某些浏览器/平台(IE / Windows)上,您可以通过ActiveX对象创建和写入文件:

function WriteToFile()
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var s = fso.CreateTextFile("C:\\temp\\Test.txt", true);
s.WriteLine('Hello');
s.Close();
}

另一种解决方案是使用客户端JavaScript(在浏览器中)将CSV数据输出到单独的窗口(或弹出窗口),并让用户将其复制/粘贴到Excel中。

答案 3 :(得分:1)

如果你想在浏览器网站风格中这样做,那可能很难。但Javascript是一种很好的语言,但您需要使用.hta而不是普通.html。创建.hta创建一个独立的应用程序,就像普通的.exe一样。

以下是您要查找ActiveXObject("Excel.Application")

的内容

为了将html转换为hta,这里是标记

<HTA:APPLICATION
  id="SomeId"
  border="thin"
  borderStyle="normal"
  caption="yes"
  maximizeButton="yes"
  minimizeButton="yes"
  showInTaskbar="yes"
  windowState="yes"
  innerBorder="yes"
  navigable="yes"
  scroll="auto"
  scrollFlat="yes"
  singleinstance="yes"
/>

有关htaexcel active X

的进一步阅读

答案 4 :(得分:1)

您当然可以使用FireBreath编写一个浏览器插件(IE上的ActiveX控件,其他人使用NPAPI)来执行此操作;你必须用C ++编写它。老实说,我同意其他人建议你做这个服务器端,但是你可以用插件来做它并不会太困难。

答案 5 :(得分:0)

我认为使用data URIs

可以做到这一点(达到一定的大小限制)