Главная » 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' имя файла