Показать сообщение отдельно
  #19  
Старый 11.07.2014, 15:12
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

На вкладке Servers палитры компонентов есть ExcelApplication, его нужно кинуть на форму и выставить свойство ConnectKind как ckNewInstance, вот пример передачи данных из StringGrid в Excel (drkb)

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
WorkBk: _WorkBook; //  определяем WorkBook
WorkSheet: _WorkSheet; //  определяем WorkSheet
I, J, K, R, C: Integer;
IIndex: OleVariant;
TabGrid: Variant;
begin
if GenericStringGrid.Cells[0, 1] <> '' then
   begin
     IIndex := 1;
     R := GenericStringGrid.RowCount;
     C := GenericStringGrid.ColCount;

  // Создаём массив-матрицу
     TabGrid := VarArrayCreate([0, (R - 1), 0, (C - 1)], VarOleStr);
     I := 0;

  //  Определяем цикл для заполнения массива-матрицы
     repeat
       for J := 0 to (C - 1) do
         TabGrid[I, J] := GenericStringGrid.Cells[J, I];
       Inc(I, 1);
     until
       I > (R - 1);

  // Соединяемся с сервером TExcelApplication
     ExcelApplication1.Connect;

   // Добавляем WorkBooks в ExcelApplication
     ExcelApplication1.WorkBooks.Add(xlWBatWorkSheet, 0);

  // Выбираем первую WorkBook
     WorkBk := ExcelApplication1.WorkBooks.Item[IIndex];

  // Определяем первый WorkSheet
     WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet;

  // Сопоставляем Delphi массив-матрицу с матрицей в WorkSheet
     Worksheet.Range['A1', Worksheet.Cells.Item[R, C]].Value := TabGrid;

  // Заполняем свойства WorkSheet
     WorkSheet.Name := 'Customers';
     Worksheet.Columns.Font.Bold := True;
     Worksheet.Columns.HorizontalAlignment := xlRight;
     WorkSheet.Columns.ColumnWidth := 14;

  // Заполняем всю первую колонку
     WorkSheet.Range['A' + IntToStr(1), 'A' + IntToStr(R)].Font.Color := clBlue;

     WorkSheet.Range['A' + IntToStr(1), 'A' + IntToStr(R)].HorizontalAlignment := xlHAlignLeft;
     WorkSheet.Range['A' + IntToStr(1), 'A' + IntToStr(R)].ColumnWidth := 31;

  // Показываем Excel
     ExcelApplication1.Visible[0] := True;

  // Разрываем связь с сервером
     ExcelApplication1.Disconnect;

  // Unassign the Delphi Variant Matrix
     TabGrid := Unassigned;
   end;
end;
Ответить с цитированием