Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Excel [D6, Win95/98, WinXP]


Alex870 ©   (2004-07-16 03:34:00) 

Здравствуйте уважаемые знатоки OLE!
У меня такая задача: нужно по нажатию кнопки "Save" сохранять таблицу TStringGrid в файл Excel, при нажатии этой кнопки вызывается SaveDialog и нужно, чтобы файл сохранился именно с тем именем, которое в этом диалоге будет введено, но чтобы сам Excel не появлялся.
Вот мой код, что нужно написать вместо вопросов? Зарание спасибо!

procedure TForm1.N10Click(Sender: TObject);
var
Shabl : String;
Ex : TExcelApplication;
ISheet: Excel2000._Worksheet;
IRange: Excel2000.Range;
NewValueArray: OLEVariant;
I,J,n: integer;
begin
Shabl := GetCurrentDir+'\Shablon.xls';
Sd.DefaultExt := '*.xls';
Sd.Filter := 'Файлы Excel|*.xls';
Sd.Title := 'Сохранение расчета в формате Excel';
if Sd.Execute then
 begin
  Ex := TExcelApplication.Create(Self);
  Ex.Workbooks.Add(Shabl,0);
  if Assigned(Ex) then
  begin
   try
     ISheet := Ex.Worksheets.Item['Лист1'] as Excel2000.ExcelWorksheet;
     IRange := ISheet.Range['EditRange', EmptyParam];
     n := SData.ColCount-1;
     if n > 3 then n := 3;
     NewValueArray := VarArrayCreate([1,11,1,3], varVariant);
     for i := 1 to n do
     begin
      for J := 1 to 4 do NewValueArray[j,i] := SData.Cells[i,j-1];
      for J := 5 to 11 do NewValueArray[j,i] := ResData.Cells[i,j-4];
     end;
     IRange.Value := NewValueArray;
????????????????????????????????????????????????
   finally
     IRange := nil;
     ISheet := nil;
     Ex.Quit;
     FreeAndNil(Ex);
   end;
  end;
 end;
end;


Суслик   (2004-07-16 19:44:00) [1]


> а потом убить Excel, чтобы он не выдал сообщение "Сохранить
> данные?"....

fApp := CreateOleObject('Excel.Application');
fApp.Visible := False;
fApp.Interactive := False;
fApp.DisplayAlerts := False;
fApp.ScreenUpdating := False;


Alex870   (2004-07-16 19:37:00) [2]

Уважаемый SelloutS!
Я знаю как заполнить таблицу Excel, а потом её открыть, это видно из кода, а вот как сохранить этот Excel'евский файл не открывая его с определенным именем, т.е. не делая Ex.visible[0] := true; а потом убить Excel, чтобы он не выдал сообщение "Сохранить данные?"....


Digitman   (2004-07-16 08:36:00) [3]


> Alex870


а не проще ли вместо StringGrid'а использовать непосредственно рабочий лист Excel'а как внедренный в Ole-контейнер документ и редактировать/сохранять данные прямо в Excel-документе ?


SelloutS   (2004-07-16 07:18:00) [4]

http://delphiworld.narod.ru/base/excel_data_exchange.html


Наверх

Титульная страница Поиск, карта сайта Написать письмо