OLE Automation для работы с Excel
|
Фирма Microsoft выпустила новую электронную таблицу Sexcel 1.1. На первый взгляд она ничем не отличается от Excel 5.0, но удовольствия от работы гораздо больше.
|
Подскажите мне основные функции OLE Automation для работы с
Excel из Delphi.
Есть множество статей по этому вопросу. Смотри также этот материал .
Я не могу привести полный код моего проекта, здесь я поместил лишь его
небольшую часть, создающую и форматирующую таблицу Excel на основе содержимого
DBGrid, сгенеренного с помощью SQL запроса. Код содержит некоторое
форматирование ячеек. Код проверен в работе с Delphi 3 и Excel 97:
procedure TfrmBlank.btnExcelClick(Sender: TObject);
var
XL, XArr: Variant;
i: Integer;
j: Integer;
begin
{не забудьте включить ComObj в список используемых модулей}
// Создаем массив элементов, полученных в результате запроса
XArr := VarArrayCreate([1, EmailQuery.FieldCount], varVariant);
XL := CreateOLEObject('Excel.Application'); // Создание OLE объекта
XL.WorkBooks.add;
XL.visible := true;
j := 1;
EmailQuery.First;
while not EmailQuery.Eof do
begin
i := 1;
while i <= EmailQuery.FieldCount do
begin
XArr[i] := EmailQuery.Fields[i - 1].Value;
i := i + 1;
end;
XL.Range['A' + IntToStr(j),
CHR(64 + EmailQuery.FieldCount) + IntToStr(j)].Value := XArr;
EmailQuery.Next;
j := j + 1;
end;
XL.Range['A1', CHR(64 + EmailQuery.FieldCount) + IntToStr(j)].select;
// XL.cells.select; // Выбираем все
XL.Selection.Font.Name := 'Garamond';
XL.Selection.Font.Size := 10;
XL.selection.Columns.AutoFit;
XL.Range['A1', 'A1'].select;
end;
|
Дополнение
При однопроходной передачи полной страницы гораздо удобнее использовать
двумерный Variant Array, чем запихивать данные туда построчно. Функция
VarArrayCreate позволяет создать многомерные массивы при определении 2N (где N -
кол-во измерений) границ массива в аргументе Bounds.
|