Я с тем примером тоже, кстати, запарился.. На данный момент делаю так:
| Код | var _txt,_txt1:string; Cell1,Cell2,ArrayData,ArrayColor:variant; BeginCol,BeginRow,i:integer; ColCount,RowCount:integer; oleApp:Variant;
_Sheets:integer; label 1; begin RowCount:=ADOTable1.RecordCount;//считаешь количество строк ColCount:=8;//сколько столбцов будет в EXCEL-таблице oleApp:=CreateOleObject('Excel.Application'); oleApp.WorkBooks.Add(); _txt:='c:\export.xls'; oleApp.ActiveWorkBook.SaveAs(_txt); oleApp.Workbooks.Open(_txt); // заполнение таблицы EXCEL - по листам oleApp.WorkSheets[1].Select; oleApp.WorkSheets[1].Name:='Лист данных из Дельфи';
ArrayColor:=VarArrayCreate([1,RowCount,1,2],varVariant); ArrayData:=VarArrayCreate([1,RowCount,1,ColCount],varVariant); ADOTable1.First;//твоя таблица For i:=1 to RowCount do begin if ADOTable1.FieldValues['tovar']='Ватрушки' then{Это для разукраски таблицы, если понадобится конечно} begin ArrayColor[i,1]:=i; ArrayColor[i,2]:=1; end;
ArrayData[i,1]:=ADOTable1.FieldByName('Field1').AsString; ArrayData[i,2]:=ADOTable1.FieldByName('Field2').AsString; //...... ArrayData[i,8]:=ADOTable1.FieldByName('Field8').AsString; ADOTable1.Next; end; BeginCol:=1; //с какого столбца BeginRow:=3; // и с какой строки начинаем заполнение. Cell1:=oleApp.WorkSheets[_Sheets].Cells[BeginRow,BeginCol]; Cell2:=oleApp.WorkSheets[_Sheets].Cells[BeginRow+RowCount-1,BeginCol+ColCount-1]; oleApp.WorkSheets[_Sheets].Range[Cell1,Cell2].Select; oleApp.SELECTION.Value:=ArrayData; oleApp.SELECTION.FONT.SIZE:=9; oleApp.SELECTION.FONT.Name:='Times New Roman'; oleApp.SELECTION.WrapText:=True; //понял, надеюсь, что здесь происходит - выделяем область в Excel, //и присваиваем ей значения массива
//теперь можно поразукрашивать строки for i:=1 to RowCount do begin if ArrayColor[i,2]=1 then begin Cell1:=oleApp.WorkSheets[_Sheets].Cells[i+2,1]; Cell2:=oleApp.WorkSheets[_Sheets].Cells[i+2,ColCount]; oleApp.WorkSheets[_Sheets].Range[Cell1,Cell2].Select; oleApp.Selection.Interior.ColorIndex:= 15; // цвет строки Cell1:=oleApp.WorkSheets[_Sheets].Cells[i+2,2]; Cell2:=oleApp.WorkSheets[_Sheets].Cells[i+2,2]; oleApp.WorkSheets[_Sheets].Range[Cell1,Cell2].Select; oleApp.Selection.Font.Italic:= True; end; end; //И закрываем Excel oleApp.ActiveWindow.Close; oleApp.Application.QUIT; ShowMessage('Сформирован Excel файл: '+_txt);
end;
|
|