Sample code for 30+ languages & platforms
DataFlex

CSV Append New Row

Demonstrates how to append a new row to a CSV.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Boolean iBCrlf
    Handle hoSb
    Handle hoCsv
Temp    Handle hoCsvTemp
    Integer iNumCols
    Integer i
    Integer iRow
    String sTemp1

    Move False To iSuccess

    // We have the following CSV...

    // permalink,company,numEmps,category,city,state,fundedDate,raisedAmt,raisedCurrency,round
    // lifelock,LifeLock,,web,Tempe,AZ,1-May-07,6850000,USD,b
    // mycityfaces,MyCityFaces,7,web,Scottsdale,AZ,1-Jan-08,50000,USD,seed
    // flypaper,Flypaper,,web,Phoenix,AZ,1-Feb-08,3000000,USD,a
    // infusionsoft,Infusionsoft,105,software,Gilbert,AZ,1-Oct-07,9000000,USD,a
    // gauto,gAuto,4,web,Scottsdale,AZ,1-Jan-08,250000,USD,seed

    Move True To iBCrlf
    Get Create (RefClass(cComChilkatStringBuilder)) To hoSb
    If (Not(IsComObjectCreated(hoSb))) Begin
        Send CreateComObject of hoSb
    End
    Get ComAppendLine Of hoSb "permalink,company,numEmps,category,city,state,fundedDate,raisedAmt,raisedCurrency,round" iBCrlf To iSuccess
    Get ComAppendLine Of hoSb "lifelock,LifeLock,,web,Tempe,AZ,1-May-07,6850000,USD,b" iBCrlf To iSuccess
    Get ComAppendLine Of hoSb "mycityfaces,MyCityFaces,7,web,Scottsdale,AZ,1-Jan-08,50000,USD,seed" iBCrlf To iSuccess
    Get ComAppendLine Of hoSb "flypaper,Flypaper,,web,Phoenix,AZ,1-Feb-08,3000000,USD,a" iBCrlf To iSuccess
    Get ComAppendLine Of hoSb "infusionsoft,Infusionsoft,105,software,Gilbert,AZ,1-Oct-07,9000000,USD,a" iBCrlf To iSuccess
    Get ComAppendLine Of hoSb "gauto,gAuto,4,web,Scottsdale,AZ,1-Jan-08,250000,USD,seed" iBCrlf To iSuccess

    Get Create (RefClass(cComChilkatCsv)) To hoCsv
    If (Not(IsComObjectCreated(hoCsv))) Begin
        Send CreateComObject of hoCsv
    End

    Set ComHasColumnNames Of hoCsv To True
    Get ComGetAsString Of hoSb To sTemp1
    Get ComLoadFromString Of hoCsv sTemp1 To iSuccess

    // Let's say we want to append the following row:
    // yelp,Yelp,,web,San Francisco,CA,1-Jul-04,1000000,USD,a

    // If we have the row as-is, we could do this:
    Get Create (RefClass(cComChilkatCsv)) To hoCsvTemp
    If (Not(IsComObjectCreated(hoCsvTemp))) Begin
        Send CreateComObject of hoCsvTemp
    End
    Get ComLoadFromString Of hoCsvTemp "yelp,Yelp,,web,San Francisco,CA,1-Jul-04,1000000,USD,a" To iSuccess
    Get ComNumColumns Of hoCsvTemp To iNumCols
    Move 0 To i
    Get ComNumRows Of hoCsv To iRow
    While (i < iNumCols)
        Get ComGetCell Of hoCsvTemp 0 i To sTemp1
        Get ComSetCell Of hoCsv iRow i sTemp1 To iSuccess
        Move (i + 1) To i
    Loop

    // Show the updated CSV:
    Get ComSaveToString Of hoCsv To sTemp1
    Showln sTemp1

    // Output should be:
    // permalink,company,numEmps,category,city,state,fundedDate,raisedAmt,raisedCurrency,round
    // lifelock,LifeLock,,web,Tempe,AZ,1-May-07,6850000,USD,b
    // mycityfaces,MyCityFaces,7,web,Scottsdale,AZ,1-Jan-08,50000,USD,seed
    // flypaper,Flypaper,,web,Phoenix,AZ,1-Feb-08,3000000,USD,a
    // infusionsoft,Infusionsoft,105,software,Gilbert,AZ,1-Oct-07,9000000,USD,a
    // gauto,gAuto,4,web,Scottsdale,AZ,1-Jan-08,250000,USD,seed
    // yelp,Yelp,,web,San Francisco,CA,1-Jul-04,1000000,USD,a


End_Procedure