2014-01-21 64 views
2

我想用JavaScript使用某些數據庫查詢結果構建一個XLSX文件。我必須使用JavaScript,因爲服務器後端只提供了一個JavaScript接口來處理(並且它不喜歡jQuery)。現在,我似乎已經發現了實際創建base64編碼數據以寫入文件的內容(服務器接口提供了使用base64編碼字符串創建文件並定義文件類型的API)。 XLSX.js看起來好像可以達到這個目的,因爲它看起來像可以讀取某種形式的JS對象並將其轉換爲base64字符串。但是,我很不清楚如何首先生成工作表XML數據,或者我想如何構建一個具有代表性的JS對象。如果我甚至可以找到關於結構化的信息,那麼我能夠找到的唯一有用的信息並不能真正給我提供一個很好的構想。我找到的大部分是關於閱讀文件,而不是創建它們。另外,我認爲我發現了一些實現方法的簡單方法,但隨後它們變成了一堆圖書館,我迷失了方向,試圖瞭解哪些文件實際上是必需的,以及如何正確地將它們包含在工作中。使用JavaScript構建XLSX文件

+0

您可以使用字符串或dom構建xsl。 JS的xml生成功能很脆弱,所以我可能會使用字符串,如果我是你。否則查看xml dom。 – dandavis

+0

是否存在需要生成XLSX文件的特定原因? Excel可以支持CSV和TSV文件,例如,生成起來要簡單得多 – SheetJS

+1

我也偏離了XLSX.js,因爲有一些許可問題:https://github.com/stephen-hardy/xlsx。 js/issues/8 – SheetJS

回答

-1

Excel支持兩種形式的XML文檔作爲輸入。一個是ZIP存檔,其中包含各種XML文檔和其他數據。這是標準的XLSX文件格式。

第二種形式僅僅是作爲XML文檔的工作表數據本身。所以你所需要的就是將XML創建爲字符串。維基百科有一個example for the Excel XML format。您可以在「External links」下找到參考文檔的鏈接

如果您使用此格式創建文件並將其保存爲.xslx,那麼Excel應該能夠打開它。如果不是,則嘗試.xsl擴展。如果您在格式化某些內容時遇到問題,請在Excel中執行此操作,保存並查看生成的文件。

我不確定XLSX.js會有很大的幫助,因爲它是一個依賴於jQuery和jszip等瀏覽器/客戶端框架。 「base64和back」選項是指將Excel工作表作爲base64字符串添加到HTML文檔。然後框架可以打開這個虛擬文件並檢查它。我認爲這並不意味着要生成Excel文件進​​行下載。

+0

客戶端根本沒有發生任何事情。這是所有服務器端,服務器通過一系列可用的API運行自己的JavaScript實現,其中一個API包括將使用base64編碼字符串構建的文件寫回服務器的文件結構。最終用戶最終將獲得一個鏈接來下載文件,這也由可用的API提供。我遇到的問題是試圖確保我能夠正確構建數據,並充分利用任何可用的開放庫以及它們的依賴庫。 –

+0

1.你使用什麼樣的服務器? 2.爲什麼你使用BASE64?在服務器上,只需使用二進制文件。 –

+0

這是NetSuite會計系統,所有的自定義代碼都必須用JavaScript來完成。在系統中創建不是文本文件的文件需要使用base64編碼的文件內容。 –

1

我放棄了在我工作的環境中創建XLSX文檔。我已經提供了一種方法來創建使用Excel 2003的XML格式的XLS文件,該文件似乎可以工作,除了嘗試打開以這種方式生成的文件時出現警告,指出該文件的格式與擴展名指定的格式不同。除了那個警告之外,我已經能夠創建可在Excel中打開並且表現相當好的可操作文件。

我想也許我必須離開爲我未來的任何.NET項目生成XLSX文件。這種做法很糟糕,但是感謝大家的迴應。

2

您可以使用Alasql庫將數據從js導出爲XLS,XLSX和CSV格式。

例如,我們想通過點擊一個按鈕,將我們保存在XLSX文件中的測試變量中的數據寫入。要做到這一點只需使用以下步驟:

1 - 包括在你的網頁以下文件:

<script src="http://alasql.org/console/alasql.min.js"></script> 
<script src="http://alasql.org/console/xlsx.core.min.js"></script> 

2 - 這樣的話做一個功能控制器來測試數組保存爲xlsx檔案:

function saveAsXlsx(){ 
    alasql('SELECT * INTO XLSX("output.xlsx",{headers:true}) FROM ?',[test]); 
} 

所以我們把我們在變量測試中得到的數據保存到一個我們在這裏命名爲output.xlsx的文件中。

3-最後一部分是最簡單的部分。點擊按鈕運行該功能:

<button onclick="saveAsXlsx()" >Save as XLSX</button> 
相關問題