2012-10-24 35 views
0

我試圖解析從google文檔導出的.xlsx文件。現在我不想在線訪問它,我正在手動下載它並在我的應用程序中複製。as3xls>張數總是0

我讀過the tutorial網上提供的,這是我的代碼現在所擁有的:

var contentBA:ByteArray = new ByteArray(); 
var fileToLoad:File = File.applicationDirectory.resolvePath("textLabels.xlsx");   
var stream:FileStream = new FileStream(); 
stream.open(fileToLoad, FileMode.READ); 
stream.readBytes (contentBA, 0, contentBA.length); 
var xls:ExcelFile = new ExcelFile(); 
xls.loadFromByteArray(contentBA); 
trace ("N SHEETS ", xls.sheets.length); 

但張數它始終爲0。我試圖更改文件並加載最簡單excel曾經,但它一直說0。

這是「.xlsx」擴展的問題嗎?我錯過了什麼嗎?

回答

1

AS3XLS是爲舊的文件格式BIFF Office 97樣式文檔編寫的。我爲AdvancedDataGrid上的工作編寫了一個XLSX導出器,但它是專有工作,所以我不能不幸地共享代碼。不過,我可以給你一些方向。 BIFF格式使用特殊編碼來編碼格式化單元格或公式等格式,二進制格式似乎意在減少文件大小(也可能是一種混淆形式)。 XLSX採用了更開放的XML方法,創建了一個複雜的BIFF文件,並且在微軟發佈規範之前由Open Office團隊對其進行了反向設計,而較新的XML格式有很好的文檔記錄。以擴展名x結尾的每個新辦公文件都是一個檔案文件(就像一個zip文件,您可以用任何存檔工具打開它),並在其中定義工作表。我基本上拿了一張沒有任何內容的樣例表(打開Excel保存了一個新的工作簿),然後拼湊起來,編寫了與每個XML文件相對應的AS3類,每個類實現了一個接口,表示它必須有一個方法來獲取XMLString( )然後我編寫了一個包裝器,它將創建所有對象,並使用容器模式/遍歷來構建所需的所有XML文件,並使用nochump AS3 zip庫將它打包在一起。

用於檢查XLSX或DOCX或whateverx文件的有用工具,可以在這裏找到: http://www.microsoft.com/en-us/download/details.aspx?id=5124

如果你在Mac上討論一個位置: http://openxmldeveloper.org/discussions/development_tools/f/27/p/1494/7453.aspx

一般的網站上面是有幫助 http://openxmldeveloper.org/

文檔表示(最小)的例子 http://www.ecma-international.org/news/TC45_current_work/Office%20Open%20XML%20Part%203%20-%20Primer.pdf

NoChump的AS3郵編庫 ​​

基本上更先進的功能,如表或單元格跨越我只是嘗試,我想能夠使程序在一個簡單的Excel中的更改文件,然後使用比較它與另一個沒有這種新功能上面鏈接的第一個工具,並在相應的AS3類(與更改的XML文件相對應的那個類)中實現了更改。

花了大約2周時間才讓這些課程的組織堅實,但這是絕對可以實現的。

+0

謝謝您的詳細解答!不幸的是,我很匆忙:我被要求做一個非常愚蠢和重複的工作(從gdocs開始填充xml和另一個文件)。我討厭愚蠢的作品,所以我想知道如果我可以通過構建一個微型空氣應用程序更令人討厭,安全和有趣的方式做到這一點:) –

+0

但是我有幾天的工作要做到這一點.... –

+0

做的在這種情況下抓取數據實際上應該不會太差,如果您使用nochump zip庫,則可以在代碼中打開壓縮的xlsx文件,逐步瀏覽條目,您應該能夠找到諸如sheet1.xml sheet2之類的文件。 XML等,因爲他們的XML可以使用E4X來找到你感興趣的特定節點。 – shaunhusain

0

ExcelFile是自定義庫中的一個類,它表示支持Excel 2002-2003。你使用什麼版本的Excel?

+0

我正在導出Google文檔。它只是說「下載爲excel」,但格式爲xlsx,我認爲它比2002-2003更新。但是,如果我用Numbers創建一個新的文檔(excel for mac)並將其保存爲xls,那麼它不會讀取文件 –

+0

,我認爲只有擴展名纔是可行的方式 - 我認爲有來自excel的文件的不同樣式格式。只有確保版本不是問題的方法是使用在Excel 2002-2003中創建的文件對其進行測試 - 我確定您可以在網上找到一些文件...但是,再次,這可能是浪費時間,我真的不是Excel的專家...... :) – GeorgeCross