Приветствую Вас Гость | RSS

Delphi заготовки

Суббота, 23.11.2024, 09:50
Главная » 2012 » Июнь » 9 » Delphi (object Pascal) Пример связки TStringGrid (таблицы) и CSV файла
11:07
Delphi (object Pascal) Пример связки TStringGrid (таблицы) и CSV файла
 для открытия его в Excel


Процедура открытия файла с расширением *.CSV или как загрузить таблицу из CSV файла Delphi.

//  Table - таблица TStringGrid
//  Filename - имя файла
//ch разделитель  - по умолчанию точка с запятой ";"
// StartRow сколько строк оставить для заготовка

Function LoadTableFormFile(Table:TStringGrid;Filename:string;ch:char=';'; StartRow:integer=0 ):boolean;
var t,l,x,y:integer;
    s2,s:string;
    f:textfile;
begin
if fileage(Filename)>0 then begin // проверка на существование файла
  assignfile(f,Filename);
  reset(F);
y:=StartRow-1;

  repeat
  readln(f,s);
  y:=y+1;
  if y>=Table.RowCount then Table.RowCount:=y+1;
  l:=length(s);
  s2:='';
  t:=0;
  x:=1;
  while x<=l do begin
       if s[x]='#' then begin
     s2:=s2+chr(strtoint(copy(s,x+1,2)));
     x:=x+3; end;
     if (s[x]=ch) or (x=l) then begin
     if x=l then if s[x]<>ch then s2:=s2+s[x];


     Table.Cells[t,y]:=s2;
     t:=t+1;
     if t> Table.ColCount then Table.ColCount:=t+1;
     s2:='';
     end else
     begin
      s2:=s2+s[x];
     end;
      x:=x+1;
    end;

  until eof(f);
  closefile(f);
  end;
end;

Сохраним TStringGrid в CSV файл


// процедура сохранения
//  Table - таблица TStringGrid
//  Filename - имя файла для сохранения CSV файла
// Сh разделитель  - по умолчанию точка с запятой ";"

Function SaVeTabelToCSV(Table:TStringGrid;Filename:string;ch:char=';'):integer;
  var x,y:integer;
      s:string;
      F:Textfile;
      function ecran(s:string):string;
      var s2:string;i:integer;
      begin
      s2:='';
        for I:=1 to length(s) do if (s[i]<>ch) or (ord(s[i])<32) then s2:=s2+s[i] else s2:=s2+'#'+inttostr(ord(s[I]));
        result:=s2;
      end;
begin
Rewrite(f,Filename);
for y:=0 to Table.RowCount-1 do begin
  s:='';
  for X:=0 to Table.ColCount-1 do
  s:=s+ecran(Table.Cells[x,y])+ch;
  writeln(f,s);
end;
 closefile(F);
end;

Пример
для открытия  полученного CSV файла можно написать следующий год
  uses shellapi;
...
begin
     SaVeTabelToCSV(Table1,'table.csv');
     shellapi.ShellExecute(application.Handle,'open','table.csv','','',5);
end;
где 'table.csv' имя файла

Просмотров: 4345 | Добавил: NetSoftWare | Теги: StringGrid, CSV файл, CSV, TStringGrid | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: