2010-07-20 68 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

相關問題