
11.07.2014, 15:12
|
 |
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;
|