Показать сообщение отдельно
Старый 14.02.2007, 10:13   #6  
zinius is offline
zinius
Участник
 
24 / 11 (1) +
Регистрация: 26.01.2005
2ANDY - большое спасибо, указанным методом (_copy) копирование сработало.

2Макс - помучморил pivotTable.Export - выкидывает настроенные фильтры в xml файл формате, затем экселем этот файл открываем, обновляем данные и сохраняем в xls - теперь данные отображаются и без наличия источника. Осталось прикрутить твое мегаполе XMLData с фильтрами

Вот черновой код, запускается из временной кнопки формы OLAPPivotTable:

X++:
void pivot2xls()
{
    COM             application = new COM('Excel.application');
    COM             workBooks;
    COM             workBook;
    COM             workSheets;
    COM             workSheet;
    COM             pivTables;
    COM             pivTable;
    COM             pivCache;
    ;

    //этот вариант для копирования в буфер но внешний вид
    //получается лучше у экспорта
    //pivotTable._copy(pivotTable.ActiveView());

    //зачистка ненужных файлов дабы эксель не задавал дурацких вопросов
    WinAPI::deleteFile('c:\\1.htm');
    WinAPI::deleteFile('c:\\test.xls');

    //экспорт htm
    pivotTable.Export('c:\\1.htm', 0); 
    // 0 = тупо выгрузить
    // 1 = 0 + отобразить в экселе

    //конвертация в xls
    workBooks   = application.workBooks();
    workBook    = workBooks.open('c:\\1.htm');

    workSheets  = workBook.worksheets();
    workSheet   = workSheets.item("Лист1");

    //если не подсосать данные их источника то файл будет пустым
    pivTables   = workSheet.PivotTables();
    pivTable    = pivTables.item("Сводная таблица Microsoft Office 11.0");

    pivCache    = pivTable.PivotCache();
    pivCache.Refresh();

    //сохранение в xls
    workBook.saveAs('c:\\test.xls', 39); //39 - XlFileFormat::xlExcel5, xlExcel7

    //на этом и закончим
    application.quit();
Вот ещё интересная статейка на эту тему:
http://www.compress.ru/Archive/CP/2000/12/28/

Последний раз редактировалось zinius; 14.02.2007 в 10:30.