OpenOffice.org Calc сводная таблица (DataPilot)
06-01-2008 11:41
к комментариям - к полной версии
- понравилось!
Бился над проблемой, как в OpenOffice сделать сводную таблицу, точнее ее сгенерировать. Ну например из набора данных, экспортированного на лист (см. предыдущие посты)
Делаем значит вот так:
ServiceManager := CreateOleObject('com.sun.star.ServiceManager');
vDesktop := ServiceManager.createInstance('com.sun.star.frame.Desktop');
//Открываю шаблон
Excel := vDesktop.LoadComponentFromURL('file:///'+Shablon,'_blank',0,VarArrayCreate([0, - 1], varVariant));
Sheets := Excel.GetSheets;
Sheet:=Sheets.getByIndex(0);
//Закидываем данные из Grid'а на первый лист в координаты X,Y
Range:= VarArrayCreate([1,Grid.ColCount,1,Grid.RowCount],varVariant);
For i:=0 to Grid.RowCount-1 do Begin
For j:=0 to Grid.ColCount-1 do Begin
Range[j+1,i+1]:=Grid.Cells[j,i];
Sheet.getCellRangeByName(PointToRange(X,Y)+':'+PointToRange(X+Grid.ColCount-1,Y+Grid.RowCount-1)).setDataArray(Range);
//Далее создаем XDataPilotTablesSupplier. Этот код не отрабатывает
xDPSupp:=Sheet.CreateInstance('com.sun.star.sheet.XDataPilotTablesSupplier');
//У Sheet нет метода CreateInstance
xDPTables := xDPSupp.getDataPilotTables();
к сожалению вот на этом и затык. Т.е. данные на лист данных вываливаются как надо, а дальше затык...
Кстати, естественно, все переменные Variant
Пробовал вместо
xDPSupp:=Sheet.CreateInstance('com.sun.star.sheet.XDataPilotTablesSupplier');
выполнять
xDPSupp:=Excel.CreateInstance('com.sun.star.sheet.XDataPilotTablesSupplier');
возвращается пустой объект
P.S.: задавал этот вопрос на delphikingdom.ru будем отслеживать ответы
см. http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=57767
вверх^
к полной версии
понравилось!
в evernote