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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> StringGrid->.xls 
:(
    Опции темы
Driv3r
Дата 29.10.2005, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Какнибудь можно сохранить содержимое StringGrid в формате *.xls ?
PM MAIL   Вверх
Prof_2000
Дата 29.10.2005, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Как-нибудь можно. Надо использовать COM-интерфейс. Обычно такие операции делаются так: записывается макрос, а потом переводится на Delphi с Visual Basic-а. Иными словами методом тыка.
--------------------
Pereant qui ante nos nostra dixerunt! (лат.)      Да погибнут те, кто раньше нас высказал наши мысли!   
PM MAIL WWW ICQ   Вверх
Grol
Дата 30.10.2005, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вот посмотришь, я тут что-то сам делал, а что в статьях...Давно было...
Код

var
WorkB:_WorkBook;
WorkS:_WorkSheet;
I,J,Rowi,Coli:Integer;
IIndex:OleVariant;
Mas:Variant;
begin
   IIndex := 1;
   Rowi:=Garm.RowCount;
   Coli:=Garm.ColCount;
   Mas:=VarArrayCreate([0,(Rowi+2),0,(Coli+2)],VarOleStr);
   I:=0;
   repeat
   for J:=0 to (Coli+1) do
     begin
     Application.ProcessMessages;
     if (J=Coli) or (I=Rowi) then
      Mas[I+1,J+1]:=' '
      else
      Mas[I+1,J+1]:=Garm.Cells[J,I];
     end;
    Inc(I,1);
   until
    I>(Rowi+1);
   ExcelApplication1.Connect;
   ExcelApplication1.WorkBooks.Add(xlWBatWorkSheet,0);
   WorkB:=ExcelApplication1.WorkBooks.Item[IIndex];
   WorkS:=WorkB.WorkSheets.Get_Item(1) as _WorkSheet;
   WorkS.Range['A1',WorkS.Cells.Item[Rowi+2,Coli+2]].Value2:=Mas;
   Mas:=Unassigned;
   Mas:=VarArrayCreate([0,0,0,1],VarOleStr);
   Mas[0,0]:='Постоянная составляющая гармоники';
   Mas[0,1]:=ConstLab.Caption;
   WorkS.Range['B8','C8'].Value2:=Mas;
   WorkS.Range['B8','B8'].Interior.ColorIndex:=35;
   WorkS.Range['B8','B8 '].Interior.Pattern:=xlSolid;
   WorkS.Name:='Гармоника';
   Works.Columns.Font.Bold:=True;
   Works.Columns.HorizontalAlignment:=xlCenter;
   WorkS.Columns.ColumnWidth:=21;
   //выделение
   WorkS.Range['A1','A1'].Columns.ColumnWidth:=1;
   WorkS.Range['A1','A1'].Rows.RowHeight:=8;
   WorkS.Range['B1','B1'].Columns.ColumnWidth:=51;
   WorkS.Range['C2',WorkS.Cells.Item[Rowi+1,Coli+1]].borders.Weight:=xlThin;
   WorkS.Range['B2','B'+inttostr(Rowi+1)].borders.Weight:=xlMedium;
   WorkS.Range['B2','B'+inttostr(Rowi+1)].Interior.ColorIndex:=35;
   WorkS.Range['B2','B'+inttostr(Rowi+1)].Interior.Pattern:=xlSolid;
   WorkS.Range['B'+inttostr(Rowi+2),'B'+inttostr(Rowi+2)].Rows.RowHeight:=7.5;
   WorkS.Range['B'+inttostr(Rowi+3),'C'+inttostr(Rowi+3)].borders.Weight:=xlMedium;
   WorkS.Range['B2',WorkS.Cells.Item[Rowi+1,Coli+1]].borders.Item[xlEdgeLeft].Weight:=xlMedium;
   WorkS.Range['B2',WorkS.Cells.Item[Rowi+1,Coli+1]].borders.Item[xlEdgeTop].Weight:=xlMedium;
   WorkS.Range['B2',WorkS.Cells.Item[Rowi+1,Coli+1]].borders.Item[xlEdgeBottom].Weight:=xlMedium;
   WorkS.Range['B2',WorkS.Cells.Item[Rowi+1,Coli+1]].borders.Item[xlEdgeRight].Weight:=xlMedium;
   WorkS.Range['B2',WorkS.Cells.Item[2,Coli+1]].borders.Weight:=xlMedium;
   WorkS.Range['B2',WorkS.Cells.Item[2,Coli+1]].Interior.ColorIndex:=35;
   WorkS.Range['B2',WorkS.Cells.Item[2,Coli+1]].Interior.Pattern:=xlSolid;
   WorkS.Range['A1','A1'].Select;
   ExcelApplication1.Visible[0]:=True;
   ExcelApplication1.Disconnect;
   Mas:=Unassigned;
end;

--------------------
Живи так, как будто тебе предстоит умереть завтра...Учись так, как будто тебе предстоит жить вечно.........
PM MAIL ICQ   Вверх
Самурай
Дата 30.10.2005, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код


var
 Excel, Wb, Ws: Variant;
 Unknown:IUnknown;
 Result:HRESULT;
 AppProgID:string;
 i,j: integer;



    try
     AppProgID:='Excel.Application';
     Result:=GetActiveObject(ProgIdToClassId(AppProgID),nil,Unknown);
     if Result=MK_E_UNAVAILABLE
      then
       Excel:=CreateOleObject(AppProgId)
      else
       Excel:=GetActiveOleObject(AppProgId);
     Wb := Excel.WorkBooks.Add(1);
     Ws := Wb.WorkSheets[1];
     for i:=0 to StringGrid1.RowCount-1 do
      for j:=0 to StringGrid1.ColCount-1 do
       Ws.Cells[i+1,j+1]:=StringGrid1.Cells[i,j];
     Excel.Visible := True;
    finally
     Excel := Unassigned;
     Excel := null;
    end;


Вот... думаю, что сработает. smile
PM MAIL ICQ   Вверх
YurikGL
Дата 30.10.2005, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Именно в *.xls ?
Или что-бы екселем открыть можно было?
Если втрое, то можно сохранить обычный текстовой файл с разделителми ";" *.csv если не ошибаюсь и окрыть его екселем.
--------------------
 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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