如何使用Apache文件读取CSV文件?

时间:2013-11-26 04:43:03

标签: actionscript-3 flex csv flex4 mxml

我是Apache Flex的新手。我需要编写代码来读取内容的CSV文件,如下所示,并使用mxml和actionscript将其作为swf文件中的表数据填充。

  1. 如何阅读CSV文件?
  2. 如何在mxml中表示表,并在mxml中循环数据?
  3. 1001,Vertical1,FN1001,MN1001,LN1001,Addr1001,City1001,State1001
    1011,Vertical1,FN1011,MN1011,LN1011,Addr1011,City1011,State1011
    1021,Vertical1,FN1021,MN1021,LN1021,Addr1021,City1021,State1021
    1031,Vertical1,FN1031,MN1031,LN1031,Addr1031,City1031,State1031
    1041,Vertical1,FN1041,MN1041,LN1041,Addr1041,City1041,State1041
    

1 个答案:

答案 0 :(得分:3)

以下是如何在flex中显示CSV数据的简单示例。该代码不包含任何故障转移功能,仅用于说明解决方案。

  1. 数据通过函数loadData中的URLLoader加载。
  2. 检索到的数据在函数processData中处理。它被分成几行。每行都转换为数组(再次通过拆分),结果被推送到输出数组,该数组被指定为网格的数据提供者。 Grid已定义列,其数据字段与从行转换的数组中的索引匹配。

    <mx:Application name="CSVTest" xmlns:mx="http://www.adobe.com/2006/mxml" applicationComplete="loadData();">
        <mx:Script><![CDATA[
        private var dataLoader:URLLoader;
    
        private function loadData():void {
            dataLoader = new URLLoader(new URLRequest("data.csv"));
            dataLoader.addEventListener(Event.COMPLETE, parseData);
        }
    
        private function parseData(event:Event):void {
            var output:Array = [];
            var input:String = dataLoader.data;
            var rows:Array = input.split("\n");
            for (var i:int = 0, len:int = rows.length; i < len; i++) {
                var row:Array = String(rows[i]).split(",");
                output.push(row);
            }
            grid.dataProvider = output;
        }
        ]]></mx:Script>
        <mx:DataGrid id="grid">
            <mx:columns>
                <mx:DataGridColumn dataField="0"/>
                <mx:DataGridColumn dataField="1"/>
                <mx:DataGridColumn dataField="2"/>
                <mx:DataGridColumn dataField="3"/>
                <mx:DataGridColumn dataField="4"/>
                <mx:DataGridColumn dataField="5"/>
                <mx:DataGridColumn dataField="6"/>
                <mx:DataGridColumn dataField="7"/>
            </mx:columns>
        </mx:DataGrid>
    </mx:Application>