sábado, 2 de septiembre de 2017

Cargar un archivo CSV en un StringGrid

Una vez puesto en el Form un componentes TStringGrid y un TButton y haber ajustado un par de propiedades desde el inspector de objetos, solo es necesario escribir una línea de código.

StringGrid1.LoadFromCSVFile('archivo.csv',' ',False,0,True);


Para este caso quité tanto la columna como la fila fija, la cantidad de columnas viene por default en 5 y el tamaño de las celdas lo fijé en 80, nada más. El archivo que carga contiene 50.000 filas y pesa 1,5 MB. Lo carga en aproximadamente 5 segundos.

El procedimiento LoadFromCSVFile:

procedure LoadFromCSVFile (

AFilename: string; 

ADelimiter: Char=',';

UseTitles: boolean=true;


FromLine: Integer=0;

SkipEmptyLines: Boolean=true);  

Como podemos observar, varios parámetros, al ya tener un valor asignado, son opcionales.

AFilename: el nombre del archivo, si no está en el mismo directorio que el programa, debe especificarse la ruta completa.

ADelimiter: el delimitador o separador de campos, al ser del tipo Char admite un solo caracter.

UseTitles: Si es True entonces respetará la primera fila como títulos de los campos comenzando la carga de datos en la siguiente, o sea, no la importa, caso contrario comenzará por la fila 0 (cero). Esto se refiere al archivo, es decir, si la primera fila del archivo son los títulos de las columnas.

FromLine: desde qué línea comienza la importación del archivo CSV.

SkipEmptyLines: si  es True, entonces si encuentra una línea vacia, la ignora, de lo contrario, la cargará en blanco.

Código completo del ejemplo:

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
    Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids,
        StdCtrls;

type

        { TForm1 }

    TForm1 = class(TForm)
                Button1: TButton;
                StringGrid1: TStringGrid;
                procedure Button1Click(Sender: TObject);
    private
        { private declarations }
    public
        { public declarations }
    end;

var
    Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  StringGrid1.LoadFromCSVFile('archivo.csv',' ',False,0,True);
end;

end.     

Código fuente para descargar: CSV a StringGrid.7z




No hay comentarios:

Publicar un comentario