Разгруппировка Строк В Excel Средствами Openoffice(vba)

Тема в разделе "1C и всё что с ней связано", создана пользователем Manticor, 14 июл 2014.

  1. Manticor

    Manticor New Member

    Регистрация:
    14 июл 2014
    Сообщения:
    1
    Симпатии:
    0
    Доброго времени суток. Нужно при выгрузке табличного документа в Excel средтсвами openOffice убрать группировки строк.
    Код такой:
    Код ( (Unknown Language)):
    &НаСервере
    Процедура УстановитьПараметрыСтраницы(ИмяВременногоФайла, ТабДокумент)

    Попытка
    ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
    Исключение
    Сообщить("Ошибка при связи с сервис менеджером (com.sun.star.ServiceManager)." +
    + Символы.ПС + ОписаниеОшибки());
    Возврат;    
    КонецПопытки;

    Попытка
    Desktop = ServiceManager.CreateInstance("com.sun.star.frame.Desktop");
    Исключение
    Сообщить("Ошибка при запуске сервиса Desktop (com.sun.star.frame.Desktop).'" +
    + Символы.ПС + ОписаниеОшибки());
    Возврат;
    КонецПопытки;

    #Если ВебКлиент Тогда
    scr = Новый COMОбъект("MSScriptControl.ScriptControl");
    scr.language = "javascript";
    scr.eval("Massiv=new Array()");
    scr.AddObject("ServiceManager",ServiceManager);

    scr.eval("Massiv[0]=ServiceManager.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
    scr.eval("Massiv[0].Name='Hidden'");
    scr.eval("Massiv[0].Value=true");

    Парам = scr.eval("Massiv");
    #Иначе
    Парам = Новый COMSafeArray("VT_DISPATCH", 1);
    #КонецЕсли

    #Если Не ВебКлиент Тогда
    Парам.SetValue(0, СвойствоЗначение(ServiceManager, "Hidden", Истина));
    #КонецЕсли

    Document = Desktop.LoadComponentFromURL(ПреобразоватьВURL(ИмяВременногоФайла), "_blank", 0, Парам);

    #Если ВебКлиент Тогда
    Document.getCurrentController().getFrame().getContainerWindow().setVisible(Ложь);
    #КонецЕсли

    Document.lockControllers();
    Document.addActionLock();

    Sheets=Document.getSheets();
    Sheet=Sheets.getByIndex(0);

    СтилиСтраницы =Document.StyleFamilies.getByName("PageStyles");
    Для поз = 0 по СтилиСтраницы.count - 1 Цикл
    МойСтиль = СтилиСтраницы.getByIndex(поз);
    МойСтиль.ScaleToPagesX = 1;
    //МойСтиль.PageScale = 100;
    КонецЦикла;

    ПараметрыСтраницы=СтилиСтраницы.getByName(Sheet.PageStyle);

    //Установка полей
    ПараметрыСтраницы.LeftMargin  = ТабДокумент.ПолеСлева * 100;
    ПараметрыСтраницы.RightMargin = ТабДокумент.ПолеСправа * 100;
    ПараметрыСтраницы.TopMargin    = ТабДокумент.ПолеСверху * 100;
    ПараметрыСтраницы.BottomMargin = ТабДокумент.ПолеСнизу * 100;

    //Установка ориентации
    Если ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт Тогда
    ПараметрыСтраницы.IsLandscape = Истина;
    ПараметрыСтраницы.Width = 29700;
    ПараметрыСтраницы.Height = 21000;
    Иначе
    ПараметрыСтраницы.IsLandscape = Ложь;
    ПараметрыСтраницы.Width = 21000;
    ПараметрыСтраницы.Height = 29700;
    КонецЕсли;

    //Установка масштаба печати
    //Если ТабДокумент.МасштабПечати <> Неопределено Тогда
    //  ПараметрыСтраницы.PageScale = ТабДокумент.МасштабПечати;
    //КонецЕсли;

    //Сохранение документа
    Document.unlockControllers();
    Document.removeActionLock();

    Попытка
    Document.Store();
    Исключение
    Сообщить(ОписаниеОшибки());
    КонецПопытки;

    Document.Close(Истина);

    //Отключаем COM - соединение
    Desktop.terminate();

    КонецПроцедуры
    В самом докумете опен офиса сделал макрос, который при скрытии группировки выдает такой код:

    Код (LotusScript):
    sub Main
    rem ----------------------------------------------------------------------
    rem define variables
    dim document  as object
    dim dispatcher as object
    rem ----------------------------------------------------------------------
    rem get access to the document
    document  = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

    rem ----------------------------------------------------------------------
    dim args1(0) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "RowOrCol"
    args1(0).Value = "R"

    dispatcher.executeDispatch(document, ".uno:Ungroup", "", 0, args1())

    end sub
    Также на данном форуме наткнулся на тему, где делали копирование и выделение как то подобно:
    http://codeby.net/lofiversion/index.php?t26750.html

    Помогите плиз понять - что нужно добавить в коде в 1с, чтобы группировки убирались? Пробовал так:

    dispatcher = ServiceManager.createInstance("com.sun.star.frame.DispatchHelper"); //компанента для копирования
    dispatcher.executeDispatch(Document.CurrentController.Frame, ".uno:Ungroup", "", 0, Парам);//разгруппировать

    //Сохранение документа
    Document.unlockControllers();
    Document.removeActionLock();
    Ничего не меняется.
     
Загрузка...

Поделиться этой страницей