我正在尝试解析从Google文档导出的.xlsx文件。现在我不想尝试在线访问它,我手动下载并在我的应用程序中复制。
我已经在线阅读了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”扩展程序的问题吗?我错过了什么吗?
答案 0 :(得分:1)
AS3XLS是为旧文件格式BIFF Office 97样式文档编写的。我为AdvancedDataGrid上的工作编写了一个XLSX导出器,但它是专有工作,所以我不能分享代码。不过我可以给你一些方向。 BIFF格式使用特殊代码来编码单元格或公式的格式,二进制格式似乎是为了减小文件大小(也许是一种混淆形式)。 XLSX采用更开放的XML方法,创建BIFF文件很复杂,并且在Microsoft发布规范之前由Open Office团队进行了逆向工程,较新的XML格式已经很好地记录在案。每个以x扩展名结尾的新办公文件都是一个存档(就像一个zip文件,你可以用任何存档工具打开它),里面有一堆定义工作表的XML文件。我基本上拿了一张没有任何内容的样本表(打开Excel保存了一个新的工作簿)然后拼凑它并编写了与每个XML文件相对应的AS3类,每个类都实现了一个接口,表示它必须有一个getXMLString方法( )然后我写了一个包装器,它将创建所有对象,并使用容器模式/遍历来构建所需的所有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 Zip库 http://nochump.com/blog/archives/15
基本上对于更高级的功能,如表格或单元格跨越,我只是尝试了我想要能够在一个简单的Excel文件中以编程方式进行的更改,然后使用上面链接的第一个工具并实现更改,将其与另一个进行比较在适当的AS3类(与更改的XML文件对应的类)中。
花了大约2个星期的时间才使这些课程的组织变得稳固,但这绝对是可以实现的。
答案 1 :(得分:0)
ExcelFile是一个来自自定义库的类,它表示支持Excel 2002-2003。您使用的是哪个版本的Excel?