Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

CSV Insert Column

See more CSV Examples

Insert a new column into an existing CSV.

Note: This example requires Chilkat v9.5.0.89 or greater because the InsertColumn method was added in v9.5.0.89.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Csv;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  csv: TCsv;
  col: Integer;
  weightColumn: Integer;

begin
  success := False;

  csv := TCsv.Create;

  //  Load the following CSV:

  //   Name;City;Weight
  //   John;Chicago;180
  //   Lisa;Denver;120

  //  Indicate that the 1st line contains column names.
  csv.HasColumnNames := True;
  success := csv.LoadFile('qa_data/csv/insertColumnTest.csv');

  //  We can insert a column before the 1st column.
  csv.InsertColumn(0);

  WriteLn(csv.SaveToString());

  //  The CSV now looks like this:

  //   ;Name;City;Weight
  //   ;John;Chicago;180
  //   ;Lisa;Denver;120

  //  Set the cells in column 0.

  col := 0;
  csv.SetColumnName(col,'id');
  csv.SetCell(0,col,'100');
  csv.SetCell(1,col,'101');

  WriteLn(csv.SaveToString());

  //  We now have:

  //   id;Name;City;Weight
  //   100;John;Chicago;180
  //   101;Lisa;Denver;120

  //  Insert a new column between City and Weight
  //  In other words, add a new column before the Weight column.
  weightColumn := csv.GetIndex('Weight');
  WriteLn('Weight Column Index = ' + weightColumn);
  csv.InsertColumn(weightColumn);

  WriteLn(csv.SaveToString());

  //  We now have:

  //   id;Name;City;;Weight
  //   100;John;Chicago;;180
  //   101;Lisa;Denver;;120

  //  Set the cells in the new column:

  csv.SetColumnName(weightColumn,'Height');
  csv.SetCell(0,weightColumn,'6'' 2"');
  csv.SetCell(1,weightColumn,'5'' 7"');

  WriteLn(csv.SaveToString());

  //  We now have:

  //   id;Name;City;Height;Weight
  //   100;John;Chicago;"6' 2""";180
  //   101;Lisa;Denver;"5' 7""";120


  csv.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.