Apache flex 上载Excel文档时出现问题。什么';怎么了?

Apache flex 上载Excel文档时出现问题。什么';怎么了?,apache-flex,excel,Apache Flex,Excel,由于某些原因,并非所有Excel文档都可以从我的计算机上载。在一半的情况下,从一个try-catch块中得到错误“..no!!error:”。。怎么了 private function importXLS(e:MouseEvent):void { fr = new FileReference(); var fileFilter:FileFilter = new FileFilter("Excel (.xls)", "*.xls");

由于某些原因,并非所有Excel文档都可以从我的计算机上载。在一半的情况下,从一个try-catch块中得到错误“..no!!error:”。。怎么了

        private function importXLS(e:MouseEvent):void {
            fr = new FileReference();
            var fileFilter:FileFilter = new FileFilter("Excel (.xls)", "*.xls");
            fr.addEventListener(Event.SELECT,selectXLS);
            fr.browse([fileFilter]);
            statusLabel.text = "selecting...";
        }

        private function selectXLS(e:Event):void {
            fr = FileReference(e.target);
            fr.addEventListener(Event.COMPLETE, fileIn);
            fr.load();
            statusLabel.text = "loading...";
        }

        private function fileIn(e:Event):void {
            ba = new ByteArray();
            ba = fr.data;

            xls = new ExcelFile();

            var flag:Boolean = false;
            try{
                xls.loadFromByteArray(ba);
                flag = true;
            }catch(error:Error){
                Alert.show("no!! error: " + error.getStackTrace());
            }
            if (flag == true) {
                statusLabel.text = "XlS loaded.";
            } else {
                statusLabel.text = "XlS didn't load.";
            }

        }

您正在将整个文件读入内存。如果用户试图上传太大的文件,他们的浏览器将崩溃。你这样做有什么原因吗?您是在客户端使用字节,还是只是将它们传递给服务器。如果要将它们传递给服务器,只需不使用在selectXLS()中调用的fr.load方法即可。相反,使用Fr.Poad并避免整个问题。

可能是因为很多人认为CSV文件或包含HTML标记的文件自动地转换为Excel文件,如果它们被扩展为.xLS。请尝试检查那些文件的实际内容,这些文件无法确定它们是否真的是Excel文件,或者其他伪装成Excel文件的文件。我已经创建了这些文件,或者它们创建了我的朋友。它们真的是Excel文件错误的内容是什么。getStackTrace(),应该在loadFromByteArray和任何后续的方法调用中给出可疑的行号,在调试模式下运行时发生了什么,它遇到了这个错误,ba看起来是否具有正确的值(某种长度的字节数组)。需要更多的调试信息。