1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

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

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

  1. Manticor

    Manticor New Member

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

    Код:
    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();
    Ничего не меняется.
     
Загрузка...
Похожие Темы - Разгруппировка Строк Excel
  1. seoman2
    Ответов:
    6
    Просмотров:
    174
  2. I_am_user
    Ответов:
    0
    Просмотров:
    134
  3. basheer
    Ответов:
    7
    Просмотров:
    250
  4. Серега_123
    Ответов:
    1
    Просмотров:
    278
  5. ramrem
    Ответов:
    3
    Просмотров:
    240

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