Импорт-экспорт StringGrid в CSV в Delphi

Уже говорил, что разбирал древний хлам на очень старом компьютере и нашёл папку с исходниками, набросками кода. Такая, знаете ли, библиотечка под рукой. Была и папочка с примером -StringGrid в CSV в Delphi. Прошли годы, но, как вижу, Rad Studio еще трепыхается. Для тех, кто пользуется, выкладываю тот кусочек кода для импорта/экспорта данных в CSV файл из Delphi.

Код, как вижу, где-то скопипастил. Короче, на форму ставим компоненты: StringGrid1, Button1 (сохранить), Button2 (загрузить), Label1, Edit1.

CSV StringGrid Delphi. Как сохранить StringGrid в CSV в Delphi

Вот полный код модуля импорта-экспорта. Просто копируем и вставляем.

Код примера импорта-экспорта StringGrid в csv в Delphi

unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids;

type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
D:string;
TabT:Char;

implementation

{$R *.dfm}

////////////////////////////////////////////////////////////////////////////////
// Сохранение в формате CSV
////////////////////////////////////////////////////////////////////////////////

procedure SaveBase(StringGrid: TStringGrid; const FileName: TFileName);
var
l: TStrings;
i: word;
s: string;
begin
l:= TStringList.Create;
for i:= 0 to Pred(StringGrid.RowCount) do
begin
StringGrid.Rows[i].StrictDelimiter:= true;
StringGrid.Rows[i].Delimiter:= TabT;
s:= StringGrid.Rows[i].DelimitedText;
l.Add(s);
end;
l.SaveToFile(FileName);
l.Free;
end;

////////////////////////////////////////////////////////////////////////////////
// Загрузка в формате CSV
////////////////////////////////////////////////////////////////////////////////



procedure LoadBase(StringGrid: TStringGrid; const FileName: TFileName);
var
sdata, srow: TStrings;
i:integer;
begin
sdata:=TStringList.Create;
srow:=TStringList.Create;
srow.StrictDelimiter:= true;
srow.Delimiter:=TabT;
sdata.LoadFromFile(FileName);
StringGrid.RowCount:=sdata.Count;
for i:=0 to sdata.Count-1 do begin
srow.DelimitedText:=sdata[i];
if srow.Count>StringGrid.ColCount then
StringGrid.ColCount:=srow.Count;
StringGrid.Rows[i].Assign(srow);
end;
srow.Free;
sdata.Free;
end;

////////////////////////////////////////////////////////////////////////////////
// Сохранить
////////////////////////////////////////////////////////////////////////////////

procedure TForm1.Button1Click(Sender: TObject);
begin
SaveBase(StringGrid1,D);
end;

////////////////////////////////////////////////////////////////////////////////
// Загрузить
////////////////////////////////////////////////////////////////////////////////

procedure TForm1.Button2Click(Sender: TObject);
begin
LoadBase(StringGrid1,D);
end;

////////////////////////////////////////////////////////////////////////////////
// Изменение разделителя
////////////////////////////////////////////////////////////////////////////////

procedure TForm1.Edit1Change(Sender: TObject);
begin
TabT:=Char(Edit1.Text[1]);
end;

////////////////////////////////////////////////////////////////////////////////
// Исходные данные. Текущая директория. Разделитель
////////////////////////////////////////////////////////////////////////////////

procedure TForm1.FormCreate(Sender: TObject);
begin
GetDir(0,D);
D:=D+’\test.csv’;
TabT:=Char(Edit1.Text[1]);
end;

end.

Файл CSV представляет собой простой текст с разделителями для табличного представления в ячейках. Поддерживается Excel и другими табличными редакторами.

ИСХОДНИК КЛИЕНТ-СЕРВЕРА С АВТОРИЗАЦИЕЙ ДЛЯ ПЕРЕДАЧИ СООБЩЕНИЙ И ФАЙЛОВ

ИСХОДНИК ПРОИГРЫВАТЕЛЯ ИНТЕРНЕТ РАДИО RAD STUDIO DELPHI

В директории с программой создайте текстовый файл, переименуйте в test.csv и заполните его, например, этим:

Заголовок 1;Заголовок 2;Заголовок 3;Заголовок 4
1111 1;11111;111 111 ;11111 1111
2 test;22 test;222 test;2222 test
3 test;33 test;333 test;3333 test

Ну, а дальше запускаете свой проект и можете импортировать или экспортировать данные меняя разделитель.

CSV StringGrid Delphi

Если есть какой старинный проект — можете туда внедрить. Успехов! Будет ещё что из полезного попадаться — выложу.

З.Ы. Видел там парсер. Нужен будет, пишите в комментах — выложу исходник. Ещё не проверял как он компилится на новых версиях.

Читайте нас в Telegram или Facebook

Поделиться в сетях:



Добавить комментарий

Войдите (зарегистрируйтесь) с помощью вашего аккаунта: