2010-07-20 47 views

回答

26

我想你误会的答案给你联系,它建议你使用数据URI出口的问题。

由于文件格式本身是二进制文件(or OOXML),Excel的目标有点复杂。如果您只想要在 Excel中打开,那么您可以将更直接的CSV导出为数据URI。下面的代码是一个有点粗糙和准备,并只在Firefox中进行了测试:

function exportData() { 
    var data = ''; 
    for (var i=1;i<=2;i++) { 
     var sep = ''; 
     for (var j=1;j<=4;j++) { 
      data += sep + document.getElementById(i + '_' + j).value; 
      sep = ','; 
     } 
     data += '\r\n'; 
    } 
    var exportLink = document.createElement('a'); 
    exportLink.setAttribute('href', 'data:text/csv;base64,' + window.btoa(data)); 
    exportLink.appendChild(document.createTextNode('test.csv')); 
    document.getElementById('results').appendChild(exportLink); 
} 

这里的页面标记:

<input type="number" id="1_1" value="2">, 
<input type="number" id="1_2" value="1">, 
<input type="number" id="1_3" value="4">, 
<input type="number" id="1_4" value="3"> 
<br> 
<input type="number" id="2_1" value="1">, 
<input type="number" id="2_2" value="2">, 
<input type="number" id="2_3" value="3">, 
<input type="number" id="2_4" value="4"> 
<br> 
<button onclick="exportData()">Export as CSV</button> 
<div id="results"></div> 

Demo here。点击你获得链接的按钮,点击链接,你会得到一个文件。更改值,再次单击该链接,您将得到不同的文件。 Firefox让我每次都选择Excel来打开它,但我不知道这是我的配置还是一般问题。

CSV in Excel 2007 http://www.boogdesign.com/images/external/data-uri-csv.png

就像我说的,只有在Firefox测试,它只会在支持Data URIs浏览器。您还需要window.btoa() function或实施您自己的base64 encoder

+0

有趣。当我在Excel中打开结果时,我得到两个单元格A1('2,1,4,3')和A2('1,2,3,4')。所以它是识别行而不是列。感谢你的开始,虽然(你对链接的问题是正确的,但它不是正确的答案出口) – 2010-07-20 18:32:34

+1

@AlexMcp也许这取决于你使用的是什么版本的Excel?我添加了我在Excel 2007中看到的屏幕截图。 – robertc 2010-07-20 18:43:11

+0

哇,知道这件事太好了。谢谢:-) – 2010-07-21 00:11:57

2

我不知道任何可以制作Excel文件的Javascript库。但是,您可以简单地将它导出为HTML或CSV格式 - 请注意,JavaScript无法生成文件(但尚未),但HTML的工作草图可以满足此需求:http://www.w3.org/TR/file-writer-api/

Excel在阅读HTML表格方面非常出色,因此您可以只需做到这一点,并用Excel打开HTML文件。

您可以使用Downloadify下载文件:https://github.com/dcneiner/Downloadify

+3

我在考虑让用户复制/粘贴。这不是一个商业产品,只是一个实用工具,所以或许可以问问一些人。我希望有一个whizbang HTML5 API ......我不知道,做了什么魔术或什么...... – 2010-07-20 02:25:22

+0

+1请求神奇:) – technomalogical 2010-07-20 03:16:55

+0

如果你将焦点转移到服务器端,你可以输出一个自定义的MIME类型你的选择。 CSV是将数据导出到Excel的简单方法。 – 2010-07-20 18:31:56

相关问题