3

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

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

谢谢!

编辑:

感谢大家的所有建议。希望我能把你们都标记为答案,但现在必须上船了

4

6 回答 6

4

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

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

于 2011-09-22T00:04:54.287 回答
1

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

于 2011-09-22T00:06:23.053 回答
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 中。

于 2011-09-22T00:11:20.303 回答
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

于 2011-09-22T00:16:00.660 回答
1

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

于 2011-09-22T04:47:34.207 回答
0

I think that it would be possible to do this (up to a certain size limit) with data URIs

于 2013-07-22T14:45:49.600 回答