Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сводная таблица(Excel) [Delphi]


beg ©   (2005-06-22 23:50:00) 

Delphi 7 & Excel 2003
Хочу сгенерить сводную таблицу в Excel'е. Т.К. в Delphi нет документации по компоненту ExcellApplication
nj запустил запись макроса и записал действия чтобы посмотреть код на VBA. Взял оттуда весь код и
переписал на Delphi. Вот он сам:

procedure TForm1.Button1Click(Sender: TObject);
var ISheet: ExcelWorkSheet;
   PVTable:PivotTable;
   XLApp:Excelworkbook;
   IRange: ExcelRange;
   i, j: integer;
begin
   ISheet:= ExcelApplication1.Workbooks[1].Worksheets[1]as Excelworksheet;
   XLApp := ExcelApplication1.Workbooks[1];
   XLApp.PivotCaches.Add(xlDatabase,'Отчет!R1C2:R218C5').CreatePivotTable('','СводнаяТаблица1',EmptyParam,xlPivotTableVersi on10);
   // Здесь возникает ошибка
   ISheet.PivotTableWizard(xlDatabase,ISheet.Range['B1','E218'],ISheet.Cells.Item[3,1],'СводнаяТаблица1',true,true,true,tru e,false,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0,false,EmptyParam);

   ISheet.Range['A3',EmptyParam].Select;
   XLApp.ShowPivotTableFieldList := True;
   PVTable:=ISheet.PivotTables('СводнаяТаблица2',EmptyParam) as PivotTable;
   PVTable.DataPivotField.PivotItems('CITY').Orientation:=xlColumnField;
   PVTable.DataPivotField.PivotItems('CITY').Position:=1;

   PVTable:=ISheet.PivotTables('СводнаяТаблица2',EmptyParam) as PivotTable;
   PVTable.DataPivotField.PivotItems('TYPE_OBJECT').Orientation:=xlColumnField;
   PVTable.DataPivotField.PivotItems('TYPE_OBJECT').Position:=1;
   PVTable.AddDataField(PVTable.DataPivotField.PivotItems('SUMMA'),'Количество по полю SUMMA', xlCount);
   PVTable.DataPivotField.PivotItems('TYPE_OBJECT').Function_:=xlSum;

   PVTable.ColumnGrand:=False;
   PVTable.RowGrand:=False;

   IRange := nil;
   ISheet := nil;
end;

Но возникает ошибка со свойством PivotTableWizard. Вот сообщение:
Could not variant of type(error) into type(integer)
Кажется из-зи 2-го параметра PivotTableWizard. Так и не разобрался с этим параметром
В чем проблема???


YurikGL   (2005-06-23 12:35:00) [1]

Все же попробуй
  ISheet.PivotTableWizard(xlDatabase,ISheet.Range['B1','E218'],ISheet.Cells.Item[3,1],'СводнаяТаблица1',true,true,true,tru  e,false,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0,false,1);


beg   (2005-06-23 09:07:00) [2]

Да нет там, все параметры типа OleVariant


YurikGL   (2005-06-23 07:21:00) [3]


> Could not variant of type(error) into type(integer)

Если правильно понял, то где-то требуется параметр типа integer, а ты суешь другой тип.

Кинь на форму TExcelWorkSheet, набери

TExcelWorkShee.PivotTableWizard и в сплывающей подсказке посмотри типы параметров.


Наверх

Титульная страница Поиск, карта сайта Написать письмо