Title: Re: Witango-Talk: Read CSV into an array
Fogelson, Steve at [EMAIL PROTECTED] wrote:

I am reading an Excel CSV file into an array with a Read Action.

You could try something like this. It parses the file and works out whether a comma is between quotes or not.

<@ASSIGN NAME=FileContents VALUE='<@INCLUDE FILE="<@APPFILEPATH>updatefiles:<@VAR local$DistinctFileListArray[<@VAR local$currfile>,1]>">' SCOPE=LOCAL>

<@IFEMPTY VALUE='@@local$FileContents'>
File is Empty
<@ELSE>

<@ASSIGN NAME=DoubleQuote VALUE='OFF' SCOPE=LOCAL>

<@ASSIGN FileContents VALUE=<@REPLACE STR=<@VAR local$FileContents> FINDSTR=<@CRLF> REPLACESTR="[ROW]"> SCOPE=LOCAL>
<@ASSIGN
FileContents VALUE=<@REPLACE STR=<@VAR local$FileContents> FINDSTR=<@CHAR CODE=10> REPLACESTR="[ROW]"> SCOPE=LOCAL>
<@ASSIGN
FileContents VALUE=<@REPLACE STR=<@VAR local$FileContents> FINDSTR=<@CHAR CODE=13> REPLACESTR="[ROW]"> SCOPE=LOCAL>
<@ASSIGN
FileContents VALUE=<@REPLACE STR=<@VAR local$FileContents> FINDSTR=<@CHAR CODE=63> REPLACESTR=""> SCOPE=LOCAL>


<@FOR START=1 STOP=<@LENGTH <@VAR local$FileContents>>>

<@ASSIGN NAME=CurrChar Value=<@SUBSTRING STR=<@VAR local$FileContents> START=<@CURROW> NUMCHARS=1> SCOPE=LOCAL>
<@ASSIGN
NAME=NextChar Value=<@SUBSTRING STR=<@VAR local$FileContents> START=<@CALC EXPR='<@CURROW> + 1'> NUMCHARS=1> SCOPE=LOCAL>




<@IF EXPR='<@VAR local$CurrChar>=<@DQ>'>

    <@IF '(<@VAR local$DoubleQuote>="ON") AND (<@VAR local$NextChar> = <@CHAR CODE=44>)'>
       <@ASSIGN NAME=DoubleQuote VALUE='OFF' SCOPE=LOCAL>
   <@ELSEIF '<@VAR local$DoubleQuote>="OFF"'>
       <@ASSIGN NAME=DoubleQuote VALUE='ON' SCOPE=LOCAL>    
    </@IF>

<@ELSEIF EXPR='<@VAR local$CurrChar>=<@CHAR CODE=44>'>


    <@IF '<@VAR local$DoubleQuote>=OFF'>
       <@ASSIGN NAME=NewString VALUE="<@VAR local$NewString>[COL]" SCOPE=LOCAL>
   <@ELSEIF "<@VAR local$DoubleQuote>=ON">
       <@ASSIGN NAME=NewString VALUE="<@VAR local$NewString><@VAR local$CurrChar>" SCOPE=LOCAL>
   </@IF>

<@ELSE>



    <@ASSIGN NAME=NewString VALUE="<@VAR local$NewString><@VAR local$CurrChar>" SCOPE=LOCAL>

</@IF>


</@FOR>



<@ASSIGN NAME=UpdateArray VALUE=<@ARRAY VALUE=<@VAR local$NewString> CDELIM='[COL]' RDELIM='[ROW]'> SCOPE=local>

<@VAR local$UpdateArray><br>

NUMROWS: <@NUMROWS ARRAY=local$UpdateArray><BR>


</@IF>


                  Byte Services Pty Ltd
               http://www.byteserve.com.au/
                  [EMAIL PROTECTED]
   Ph 02 9960 6099   Mob 0409 960 609   Fax 02 9960 6088
________________________________________________________________________
TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf

Reply via email to