This is a demo delphi 2010 project to show export and import of CSV files.
Project Code: StringGrid2CSV
unit mainform;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls, StdCtrls, ToolWin, Grids;
type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Splitter1: TSplitter;
StringGrid1: TStringGrid;
Memo1: TMemo;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
btnImport: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
btnFillDefault: TToolButton;
procedure FormCreate(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure btnFillDefaultClick(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure btnImportClick(Sender: TObject);
private
{ Private declarations }
procedure ClearStringGrid(AStringGrid: TStringGrid; IncludeHeader: Boolean);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
btnFillDefault.Click;
end;
procedure TForm1.ClearStringGrid(AStringGrid: TStringGrid;
IncludeHeader: Boolean);
var
i: Integer;
begin
for i := 0 to AStringGrid.RowCount - 1 do
if (IncludeHeader or (i <> 0)) then
AStringGrid.Rows[i].Clear
end;
Function ExportSG2CSV(Grid: TStringGrid; Memo: TMemo;
FileName: String): Boolean;
Var
CSV: TStrings;
i: Integer;
begin
CSV := TStringList.Create;
Try
For i := 0 To Grid.RowCount - 1 Do
CSV.Add(Grid.Rows[i].CommaText);
Memo.Lines := CSV;
CSV.SaveToFile(FileName);
Result := True;
Finally
CSV.Free;
End;
end;
procedure TForm1.ToolButton1Click(Sender: TObject);
begin
ExportSG2CSV(StringGrid1, Memo1, 'File1.csv');
end;
Procedure LoadCSVtoGrid(Grid: TStringGrid; FileName: String; Memo: TMemo);
var
FileStringsList: TStringList;
RowStringsList: TStringList;
i: Integer;
begin
FileStringsList := TStringList.Create;
RowStringsList := TStringList.Create;
try
FileStringsList.LoadFromFile(FileName);
//FileStringsList.Assign(Memo.Lines);
Grid.RowCount := FileStringsList.Count;
for i := 0 to FileStringsList.Count - 1 do
begin
RowStringsList.Clear;
RowStringsList.CommaText := FileStringsList[i];
Grid.Rows[i].Assign(RowStringsList);
end;
finally
FileStringsList.Free;
RowStringsList.Free;
end;
end;
procedure TForm1.btnImportClick(Sender: TObject);
begin
LoadCSVtoGrid(StringGrid1, 'File1.csv', Memo1);
end;
procedure TForm1.ToolButton3Click(Sender: TObject);
begin
ClearStringGrid(StringGrid1, True);
end;
procedure TForm1.btnFillDefaultClick(Sender: TObject);
var
i, J, K: Integer;
begin
K := 0;
with StringGrid1 do
for i := 0 to ColCount - 1 do
for J := 0 to RowCount - 1 do
begin
K := K + 1;
Cells[i, J] := Format('%*.*d', [2, 2, K]) + ' Col ' + IntToStr(i)
+ ' Row ' + IntToStr(J);
end;
end;
end.
1 comment:
Thanks for your code. very simple to understand and works perfectly.
Post a Comment