Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Экспорт StringGrid в Exel - файл 
V
    Опции темы
jaAlex
  Дата 1.8.2006, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 31.5.2006
Где: Краснодар

Репутация: нет
Всего: нет



Всем привет! Помогите пожалуйста решить такой вопрос: как экспортировать StringGrid в Exel - файл при установленном OpenOffice? Те варианты, что приведены на DelphiWorld, не работают - программа сразу вырубается. smile 
PM MAIL   Вверх
kostas
Дата 1.8.2006, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 21.7.2006

Репутация: 3
Всего: 4



А вариант экспорта в CSV здесь не подходит? OpenOffice точно так же его откроет
PM ICQ   Вверх
jaAlex
Дата 1.8.2006, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 31.5.2006
Где: Краснодар

Репутация: нет
Всего: нет



kostas, а можно поподробнее: это как? И пожалуйста, если можно конечно, с примером.
PM MAIL   Вверх
Albinos_x
Дата 1.8.2006, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



это из csv в StringGrid
http://forum.vingrad.ru/index.php?showtopic=69749&hl=csv

обратно по аналогии...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
AJIeKcEu
Дата 2.8.2006, 06:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 26.10.2005
Где: Уфа

Репутация: нет
Всего: 0



to jaAlex 
Тут на форуме есть описание... я когда то давно  скидывал...
ну если надо я выложу часть кода.. для перетаскивания...
тока не знаю подойдет с OpenOffice аль нет... хотя должно быть все ок.. 

 smile (Отправь мне в личку сообщение если долго не буду отвечать)
PM MAIL WWW ICQ   Вверх
kostas
Дата 2.8.2006, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 21.7.2006

Репутация: 3
Всего: 4



CSV - файл с разделителями, т.е. табличка построчно пишется в файл, столбцы разделяются каким либо символом, обычно , ; tab
а вот и пример:
Код

procedure ExportToCSV(SG:TStringGrid; s:string);
Var t:TStringList;
    i,j:integer;
    s1: string;
begin
  t:=TStringList.Create;
  try
   For i:=0 To SG.RowCount-1 Do
    begin
     s1:='';
     For j:=0 To SG.ColCount-1 Do
      s1:=s1+SG.Cells[j,i]+';';
     t.Add(s1);
    end;

   t.SaveToFile(s);
  finally
   t.Free;
  end;
end;

Как использовать думаю разберешься, SG - собственно сам TStringGrid, s - путь к файлу. После экспорта можешь еще потом открыть этот файл с помощью ShellExecute.

Это сообщение отредактировал(а) kostas - 2.8.2006, 08:07
PM ICQ   Вверх
Governor
Дата 2.8.2006, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 13.4.2005
Где: Москва

Репутация: нет
Всего: нет



Я делаю так:


Код


var SG: TStringGrid;

function IsOLEObjectInstalled(Name:String):boolean;
var
 ClassID: TCLSID;
 Rez : HRESULT;
begin
 Rez := CLSIDFromProgID(PWideChar(WideString(Name)),ClassID);
 Result :=(Rez = S_OK);

end;

procedure TFRawReport.Button5Click(Sender: TObject);

var ExcelApp, WorkBook, WorkSheet, Range, Range1, Cell1, Cell2, ArrayData:Variant;
    BeginCol, BeginRow: integer;
    RowCount, ColCount: integer;

begin
 if not IsOLEObjectInstalled('Excel.Application') then
  begin
  Showmessage('MS Excel not installed!');
  exit
  end;
 try 
  ExcelApp:=GetActiveOLEObject('Excel.Application');
  ExcelApp.Visible:=true;
 except
 ShellExecute(0, Nil, 'Excel.exe' , Nil, Nil, SW_NORMAL);

 end;

 Begincol := 1;
 BeginRow := 1;

 ColCount := SG.ColCount;
 RowCount := SG.RowCount;

 ExcelApp :=CreateOLEObject('Excel.Application');

 ExcelApp.Application.EnableEvents := False;

 WorkBook := ExcelApp.WorkBooks.Add;

 ArrayData:=VarArrayCreate([1,RowCount,1,ColCount],VarVariant);
 
for i:=0 to SG.ColCount-1 do for j:=0 to SG.RowCount-1 do
 ArrayData[j+1,i+1]:=SG.Cells[i,j];

 Cell1:=WorkBook.WorkSheets[1].Cells[BeginRow,BeginCol];

 Cell2:=WorkBook.WorkSheets[1].Cells[BeginRow+RowCount-1 ,BeginCol+ColCount-1];

 Range:=WorkBook.WorkSheets[1].Range[Cell1,Cell2];

 Range.Value:=ArrayData;

 ExcelApp.Visible:=true;

 ExcelApp:=Unassigned
end;

end.

PM MAIL ICQ   Вверх
Albinos_x
Дата 2.8.2006, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Цитата(Governor @  2.8.2006,  17:29 Найти цитируемый пост)
Я делаю так:


Цитата(Governor @  2.8.2006,  17:29 Найти цитируемый пост)
ExcelApp:=GetActiveOLEObject('Excel.Application');    
  ExcelApp.Visible:=true;    
 except    
 ShellExecute(0, Nil, 'Excel.exe' , Nil, Nil, SW_NORMAL);    
 end;

внимательней читаем вопрос:
Цитата(jaAlex @  1.8.2006,  22:17 Найти цитируемый пост)
 при установленном OpenOffice




--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
jaAlex
Дата 20.10.2006, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 31.5.2006
Где: Краснодар

Репутация: нет
Всего: нет



Ребят, всем спасибо огромное, разобрался и все сделал.
PM MAIL   Вверх
mrgorr
Дата 8.9.2016, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 8.9.2016

Репутация: нет
Всего: нет



Добрый день, воспользовался этим кодом 

procedure ExportToCSV(SG:TStringGrid; s:string);
Var t:TStringList;
    i,j:integer;
    s1: string;
begin
  t:=TStringList.Create;
  try
   For i:=0 To SG.RowCount-1 Do
    begin
     s1:='';
     For j:=0 To SG.ColCount-1 Do
      s1:=s1+SG.Cells[j,i]+';';
     t.Add(s1);
    end;
   t.SaveToFile(s);
  finally
   t.Free;
  end;
end;

Все нормально но мне нужно делать до запись в файл, каждый раз записывать данные в новую строку
Зарание  спасибо
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1536 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.