Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Сохранить из StringGrid в Exel или в CSV.


Автор: Denwer 13.10.2008, 17:43
Не подскажите как сохранить из StringGrid в Exel или в CSV.
Смотрел в инете примеры, но они сложноваты. Подскажите, или дайте линк на топик или ресурс. Спасибо.

Автор: bems 13.10.2008, 18:01
Код

procedure TForm1.Button1Click(Sender: TObject);
var fs:TFileStream;i,j:Integer;s:string;
begin
s:='';
for i:=0 to StringGrid1.ColCount-1 do
 for j:=0 to StringGrid1.RowCount-1 do
  if j=StringGrid1.RowCount-1
     then s:=s+StringGrid1.Cells[i,j]+#13#10
     else s:=s+StringGrid1.Cells[i,j]+ListSeparator;
fs:=TFileStream.Create('c:\csv.csv',fmCreate);
try fs.Write(s[1],Length(s)*SizeOf(s[1]))
finally fs.Free
end;
end;

Автор: Frees 14.10.2008, 07:15
bemsеще окружать строки нужно кавычками
если в них есть разделитель

примерно вот так
Код

procedure TForm1.Button1Click(Sender: TObject);
var fs: TFileStream; i, j: Integer; s: string;

  function RoundStr(str, sep: string): string;
  begin
    if (pos(sep, str) > 0) or (pos('"', str) > 0) then
    begin
      result := ReplaceStr(str, '"', '""');
      result := '"'+result+'"';
    end
    else
       result := str;
  end;

begin
  s := '';
  for i := 0 to StringGrid1.ColCount - 1 do
    for j := 0 to StringGrid1.RowCount - 1 do
      if j = StringGrid1.RowCount - 1
        then s := s + RoundStr(StringGrid1.Cells[i, j], ListSeparator) + #13#10
      else s := s + RoundStr(StringGrid1.Cells[i, j], ListSeparator) + ListSeparator;
  fs := TFileStream.Create('c:\csv.csv', fmCreate);
  try fs.Write(s[1], Length(s) * SizeOf(s[1]))
  finally fs.Free
  end;
end;

зы код не проверял

Автор: Albinos_x 14.10.2008, 09:58
http://forum.vingrad.ru/forum/topic-84634.html
это с раздела Delphi: ActiveX/СОМ/CORBA 
поиск по этому разделу: http://forum.vingrad.ru/index.php?forums=89&cat_forum=forum_id&act=Search&joinname=1&CODE=do_and_show_extern_search&keywords=StringGrid

Автор: Denwer 15.10.2008, 21:30
Frees, не пойму почему ругается на строке <<<- result := ReplaceStr(str, '"', '""'); ->>>


bems, норма работает, только вот сохраняет все в строку а не в столбик. Может в где то с индексами... думаю разберусь.

Автор: Albinos_x 15.10.2008, 22:51
здесь по поводу csv
http://forum.vingrad.ru/index.php?forums=84&cat_forum=forum_id&act=Search&joinname=1&CODE=do_and_show_extern_search&keywords=csv

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)