Советы по Delphi

       

Excel


Подскажите мне основные функции 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 begini:=1;while i<=EmailQuery.FieldCount do beginXArr[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.

[000196]



Содержание раздела