Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
XLSX Convert Sheet to CSV
Open an Excel spreadsheet (.xlsx) and loads a sheet into a CSV object.Chilkat Pascal (Lazarus/Delphi) Downloads
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.StringTable,
Chilkat.Zip,
Chilkat.Csv;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
zip: TZip;
csv: TCsv;
sheetNames: TStringTable;
sheetName: string;
csvStr: string;
begin
success := False;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// .xlsx files are Zip archives
zip := TZip.Create;
success := zip.OpenZip('qa_data/excel/fakeCompanies.xlsx');
if (success = False) then
begin
WriteLn(zip.LastErrorText);
Exit;
end;
csv := TCsv.Create;
sheetNames := TStringTable.Create;
success := csv.XlsxGetSheets(zip,sheetNames);
if (success = False) then
begin
WriteLn(csv.LastErrorText);
Exit;
end;
if (sheetNames.Count = 0) then
begin
WriteLn('There are no sheets in the .xlsx');
Exit;
end;
// Get the name of the 1st sheet.
sheetName := sheetNames.StringAt(0);
// Load the 1st sheet into the CSV.
// We could've also loaded the 1st sheet by passing an empty string for the sheet name.
success := csv.XlsxLoadSheet(zip,sheetName);
if (success = False) then
begin
WriteLn(zip.LastErrorText);
Exit;
end;
// The Chilkat CSV API can now be used to read, modify, or insert cells.
// ...
// ...
csvStr := csv.SaveToString();
WriteLn(csvStr);
// Sample output:
// CompanyName,Address,City,State,Zip,Phone
// Acme Innovations LLC,7428 Westbrook Blvd,Oak Bend,IL,60514,630-555-2398
// BlueHorizon Data Systems,1850 Crestline Park Suite 210,Rivergate,CA,92814,714-555-8821
// Pinnacle Manufacturing Corp,3912 Industrial Loop,Maple Ridge,TX,77301,281-555-4477
// Evergreen Analytics Inc,1250 Highland Terrace,Stonefield,WA,98290,425-555-9914
// NovaTech Solutions Group,578 Marketview Drive,Clearwater,FL,33760,727-555-6032
// Save to a .csv file.
success := csv.SaveFile2('c:/temp/qa_output/fakeCompanies.csv','utf-8');
if (success = False) then
begin
WriteLn(csv.LastErrorText);
Exit;
end;
zip.Free;
csv.Free;
sheetNames.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.