0

我正在尝试解析从谷歌文档导出的 .xlsx 文件。现在我没有尝试在线访问它,我正在手动下载它并在我的应用程序中复制。

我已经阅读了在线提供的教程,这是我现在拥有的代码:

 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”扩展名的问题吗?我错过了什么吗?

4

2 回答 2

1

AS3XLS 是为旧文件格式 BIFF Office 97 样式文档编写的。我为我在 AdvancedDataGrid 上的工作编写了一个 XLSX 导出器,但它是专有工作,所以很遗憾我无法共享代码。不过我可以给你一些方向。BIFF 格式使用特殊代码来编码诸如单元格或公式格式之类的东西,二进制格式似乎是为了减少文件大小(并且可能作为一种混淆形式)。相反,XLSX 采用更开放的 XML 方法,创建 BIFF 文件很复杂,并且在微软发布规范之前由 Open Office 团队进行了逆向工程,较新的 XML 格式有很好的文档记录。每个以 x 结尾的新 office 文件的扩展名都是一个存档(就像一个 zip 文件,您可以使用任何存档工具打开它),其中包含定义工作表的一堆 XML 文件。我基本上拿了一张没有任何内容的样本表(打开的 Excel 保存了一个新工作簿),然后将其拼凑起来,并编写了与每个 XML 文件相对应的 AS3 类,并且每个类都实现了一个接口,该接口说它必须有一个方法来获取 XMLString( ) 然后我编写了一个包装器,它将创建所有对象并使用容器模式/遍历来构建所需的所有 XML 文件,并使用 nochump AS3 zip 库将其打包在一起。

可以在此处找到检查 xlsx 或 docx 或任何文件的有用工具: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 周的时间才使课程的组织稳固,但这绝对是可以实现的。

于 2012-10-24T17:41:08.897 回答
0

ExcelFile 是自定义库中的一个类,它表示支持 Excel 2002-2003。您使用什么版本的 Excel?

于 2012-10-24T16:35:19.020 回答