• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы Manticor
  • Дата начала
M

Manticor

Доброго времени суток. Нужно при выгрузке табличного документа в 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

Также на данном форуме наткнулся на тему, где делали копирование и выделение как то подобно:
link removed

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

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

//Сохранение документа
Document.unlockControllers();
Document.removeActionLock();
Ничего не меняется.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!