动作脚本。无法从本地xls文件获取数据

时间:2013-10-30 10:50:58

标签: excel actionscript-3 flex actionscript as3xls

我想借助as3xls从xls文件中获取数据。

private var file:FileReference = new FileReference();
private var sheet:Sheet;
private var loadedFile:ByteArray;

private function sendLogistImport():void {  
    file.addEventListener(Event.SELECT, onFileSelect);
    file.browse();
    file.addEventListener(Event.COMPLETE, 
        function (e:Event):void { 
            loadedFile = e.currentTarget.data as ByteArray;
            var excelFile:ExcelFile = new ExcelFile();
            excelFile.loadFromByteArray(loadedFile);                
            sheet = excelFile.sheets[0]; 
            Alert.show(sheet.getCell(1,0).value);
        }
    );
}
private function onFileSelect(e:Event):void {
    file.load(); 
}

但是我在 excelFile.loadFromByteArray(loadedFile);

中收到此错误
Error: Error #2030: End of file was encountered.
    at flash.utils::ByteArray/readUTFBytes()
    at com.as3xls.xls::ExcelFile/boundsheet()[/Users/manuelwudka-robles/Documents/Flex Builder 3/as3xls/com/as3xls/xls/ExcelFile.as:633]
    at Function/http://adobe.com/AS3/2006/builtin::call()
    at com.as3xls.xls::ExcelFile/loadFromByteArray()[/Users/manuelwudka-robles/Documents/Flex Builder 3/as3xls/com/as3xls/xls/ExcelFile.as:309]
    at Function/<anonymous>()[D:\logist.as:244]

这是我的xls文件的截图:

enter image description here

这是我的xls文件: http://www.filedropper.com/template_1

请告诉我,我的错误在哪里?

1 个答案:

答案 0 :(得分:1)

我用各种XLS格式测试过它,它无法读取任何格式。从the comments来看,对各种XLS格式的支持相当糟糕。

尝试使用不同的XLS格式,也许你找到一个有效的,除此之外我恐怕无法帮助你,修复库中的问题是一项可怕的任务,我不会用它来触摸它一个10英尺的杆子:http://www.openoffice.org/sc/excelfileformat.pdf

同时查看网络上的一些分支,例如https://github.com/djw/as3xls,它们可能会实施一些修复程序,让您前进。

如果没有什么对您有用,那么我建议寻找另一个库,和/或甚至使用完全不同的文件格式(如CSV),如果这是一个选项。