繁体   English   中英

从Javascript变量创建xls或csv文件

[英]Creating an xls or csv file from a Javascript variable

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

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

谢谢!

编辑:

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

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

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

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

不,您无法直接从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中。

如果你想在浏览器网站风格中这样做,那可能很难。 但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活跃X的进一步阅读

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

我认为使用数据URI可以做到这一点(达到一定的大小限制)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM