0

我想上传 excel 文件并显示上传的 excel 文件数据网格的内容。一切进行得都很顺利。但是,当我在 loadFromByteArray() 函数的帮助下将 byteArray 形式的内容转换为 excel 表格格式时,系统给我一个错误,因为“无法访问空对象引用的属性或方法”。
这是我上传excel内容的代码:

protected function browseExcelFile(event:MouseEvent):void  
{   
 excFileRef = new FileReference();  
 excFileRef.addEventListener(Event.SELECT, onSelect);  
 excFileRef.addEventListener(Event.COMPLETE, onComplete); 
 var fileFilter:FileFilter = new FileFilter("Excel (.xls)", "*.xls");  
 excFileRef.browse([fileFilter]);  
} 

private function onSelect(event:Event):void {                               
 excelFileName.text = excFileRef.name;  
 excFileRef.load();  
}   

private function onComplete(event:Event):void {                                 
excelFileName.text = excFileRef.name;  
exceldataInByte = new ByteArray();    
exceldataInByte = event.currentTarget.data;  
if(exceldataInByte.length > 0){  
 var excObj:ExcelFile = new ExcelFile();  
 excObj.loadFromByteArray(exceldataInByte); /* this line give error */  
 var sheet:Sheet = excObj.sheets[0];  
}           
}

我不知道为什么会发生这个错误,我在很多网站上进行了搜索,但是每个人都发布了与我上传 excel 相同的方式,但我的代码给了我错误。
请告诉我为什么会出现这个错误?

4

1 回答 1

0

编辑:查看此预览(http://activetuts.s3.amazonaws.com/tuts/169_as3xls/1/preview.html)后,我意识到这个 excel 导入工具仅适用于只有 2 列数据的电子表格,无论您的数据网格有多少列。在尝试将只有两列的 .xls 文件加载到我自己的测试应用程序中后,它按预期工作。

我相信我重现了你的错误。

这是引发错误的行:

excObj.loadFromByteArray(exceldataInByte); /* this line give error */  

这是错误:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at com.as3xls.xls::ExcelFile/dimensions()[/...com/as3xls/xls/ExcelFile.as:619]
at Function/http://adobe.com/AS3/2006/builtin::call()
at com.as3xls.xls::ExcelFile/loadFromByteArray()[/...com/as3xls/xls/ExcelFile.as:309]
at stackoverflow/onComplete()[C:\...\src\stackoverflow.mxml:47]

这是在 swc 中引发错误的行(第 619 行):https ://code.google.com/p/as3xls/source/browse/trunk/src/com/as3xls/xls/ExcelFile.as#619

我建议您从这里 ( https://code.google.com/p/as3xls/source/checkout ) 将源代码签出到您的工作区中,然后调试以找出损坏的地方。

于 2013-09-03T13:25:20.337 回答