在flex中上载Excel



我想上传excel文件,并显示上传的excel文件数据网格的内容。一切都很顺利。但是,当我在loadFromByteArray()函数的帮助下将byteArray形式的内容转换为excel表格格式时,系统会给我一个错误,即"无法访问null对象引用的属性或方法"
这是我上传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相同的方式发布,但我的代码给了我错误
请告诉我为什么会出现这个错误?

编辑:查看此预览后(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:...srcstackoverflow.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),并进行调试以查找损坏的内容。

相关内容

  • 没有找到相关文章

最新更新