Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.01.12;
Скачать: CL | DM;

Вниз

Коллеги, а у кого есть LibreOffice или OpenOffice   Найти похожие ветки 

 
Ega23 ©   (2013-07-18 15:57) [0]

с макросами?
Собственно, интересует следующее: выделить область и применить к ней полное обрамление, и внешнее и внутреннее.
А то уже второй день бьюсь - ничего не выходит.


 
sniknik ©   (2013-07-18 16:20) [1]

вроде записалось ...

REM  *****  BASIC  *****

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 = "ToPoint"
args1(0).Value = "$B$4:$D$13"

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

rem ----------------------------------------------------------------------
dim args2(7) as new com.sun.star.beans.PropertyValue
args2(0).Name = "BorderOuter.LeftBorder"
args2(0).Value = Array(0,0,35,0)
args2(1).Name = "BorderOuter.LeftDistance"
args2(1).Value = 0
args2(2).Name = "BorderOuter.RightBorder"
args2(2).Value = Array(0,0,35,0)
args2(3).Name = "BorderOuter.RightDistance"
args2(3).Value = 0
args2(4).Name = "BorderOuter.TopBorder"
args2(4).Value = Array(0,0,35,0)
args2(5).Name = "BorderOuter.TopDistance"
args2(5).Value = 0
args2(6).Name = "BorderOuter.BottomBorder"
args2(6).Value = Array(0,0,35,0)
args2(7).Name = "BorderOuter.BottomDistance"
args2(7).Value = 0

dispatcher.executeDispatch(document, ".uno:BorderOuter", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(4) as new com.sun.star.beans.PropertyValue
args3(0).Name = "BorderInner.Horizontal"
args3(0).Value = Array(0,0,35,0)
args3(1).Name = "BorderInner.Vertical"
args3(1).Value = Array(0,0,35,0)
args3(2).Name = "BorderInner.Flags"
args3(2).Value = 3
args3(3).Name = "BorderInner.ValidFlags"
args3(3).Value = 127
args3(4).Name = "BorderInner.DefaultDistance"
args3(4).Value = 0

dispatcher.executeDispatch(document, ".uno:BorderInner", "", 0, args3())

rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "$I$26"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:MacroDialog", "", 0, Array())

end sub


 
Ega23 ©   (2013-07-18 16:32) [2]

Коля, спасибо, сейчас попробую перевести.


 
Ega23 ©   (2013-07-19 00:29) [3]

В общем ерунда какая-то получается. Внешнее обрамление range отработало, внутреннее - тоже, но потом при закрытии документа валится какой-то пиндык с DispatchInvoke.
Чешу репу, разбираюсь дальше.
Блин, на такой простейшей вещи третий день бьюсь...


 
Ega23 ©   (2013-07-19 13:21) [4]

Так. Под OpenOffice, оказывается, всё прекрасно работает.
Коллеги, у кого есть чистый LibreOffice с поддержкой макросов? Сделайте доброе дело, запишите, а?


 
Rouse_ ©   (2013-07-19 13:55) [5]

Леж, тыб сам уже его на виртуалке чистой развернул, чем народ доставать :)


 
Ega23 ©   (2013-07-19 14:27) [6]


> Леж, тыб сам уже его на виртуалке чистой развернул, чем
> народ доставать :)

Да у меня он и без виртуалки развёрнут. Фишка в макросах - он JRE требует. Ну скачал я это JRE, а что там куда дальше?
Тьфу, блин, вот вечно такие квесты с опенсорсом.


 
sniknik ©   (2013-07-19 14:41) [7]

> Фишка в макросах - он JRE требует.
у меня не требует, и скрипт вроде как на бейсике выдает...
требует только если явно ткнуть в "JavaScript" но там только в настройке выбрать установленный в винду... один из, у меня 2 (sun и еще что то).

тыкай в OpenOffice Basic.

> Тьфу, блин, вот вечно такие квесты с опенсорсом.
ну, не знаю, у меня все "гладко" прошло. не сложнее чем с ms excel.

может у тебя установка кривая/резанная?


 
Ega23 ©   (2013-07-19 15:13) [8]

Есть OpenOffice. Есть LibreOffice. На работе установлен Libre последней версии. Дома - open. С опеном нет проблем. С Libre - никак не получается сделать обрамление, два варианта кода (один через сервисы TableBorder и LineBorder, второй - через .uno, то что ты мне вчера дал), первый - просто не отрабатывает (выполняется, ошибок нет, но ничего не рисуется), второй - что-то с этим .uno не чисто, при попытке закрытия документа валится с крахом, так, что надо soffice из таскменеджера снимать.
Да, а макросы - никак. Пруф:
http://s21.postimg.org/jsyu0oezb/image.png


 
sniknik ©   (2013-07-19 15:48) [9]

а... LibreOffice у меня не стоит, даже не пробовал с ним. ндо будет поставить потестировать, может у меня та же проблема есть... (хотя клиенты не жаловались пока)


 
sniknik ©   (2013-07-19 15:56) [10]

вообще ошибка на скрине из-за не установленности ява машины (на работе может не ставил/и либре не поставил с собой вместе)...  скачай файл - jre-7u25-windows-i586.exe установи, и после попробуй.


 
Ega23 ©   (2013-07-19 17:37) [11]

короче. Я не понял, что я сделал, вроде по коду вообще ничего не менял. Но почему-то всё взяло и заработало, как под Libre, так и под Open.
Сделал через сервисы TableBorder, с .uno так и не удалось.


 
Eraser ©   (2013-07-21 16:04) [12]


> Ega23 ©

LibreOffice вообще в топку надо, это кривой форк open"а.
Да и open в топку надо, т.к. это кривая пародия на MS Office. для работы, в которой используется хотя бы немного сложное форматирование текста, лучше MS, не таких больших денег стоит, экономия времени.


 
Inovet ©   (2013-07-21 16:13) [13]

> [12] Eraser ©   (21.07.13 16:04)
> лучше MS, не таких больших денег стоит, экономия времени.

Я так понима, делается экспорт в разные форматы, что там у юзеров есть в наличии.


 
Германн ©   (2013-07-21 23:41) [14]


> Я так понима, делается

Это всё турбоюзер на пару с Розычем накаркали. А Ёжке отдуваться пришлось. :)


 
sniknik ©   (2013-07-22 08:11) [15]

> а... LibreOffice у меня не стоит, даже не пробовал с ним. ндо будет поставить потестировать, может у меня та же проблема есть... (хотя клиенты не жаловались пока)
есть проблема... вываливает ошибку - com.sun.start.lang.IndexOutBoundsExeption: без описания, хотя нигде ничего подобного не вызываю, язык (lang) не меняю, шрифты не настраиваю...
клиенты похоже просто не используют, раз не жалуются, а может игнорируют... т.к. есть дублирующие (в html) отчеты, и выгрузки того же самого в csv/xml.

насколько он(LibreOffice) распространен вообще? ну по сравнению с OpenOffice, не с MS, есть ли смысл разбираться, исправлять?


 
Ega23 ©   (2013-07-22 11:11) [16]

Ну со слов одного довольно-таки упоротого линуксоида я понял, что сейчас Опер Офис, после покупки его Ораклом, "уже не тот" и прогрессивное общество в срочном порядке мигрирует на Либре. Правда я не удивлюсь, если окажется, что прогрессивная часть общества - это 3.5 анонимуса-красноглазика с Петровско-Разумовской.
Лично я пока ещё не понял, стОит ли действительно досконально разбираться в тонкостях, может этот отчёт - единственный был, который и там и там должОн работать. Если задача повторится - то уже придётся досконально разбираться и какой-то внятный фреймворк писать (отдельные лучи поноса разработчикам этих ваших либре-опен-офисов за CharFontName вместо FontName, CharHeight вместо FontSize, CharPosture вместо FontStyle + [fsItalic] и CharWeight вместо FontStyle + [fsBold], причём CharWeight указывается в процентах от обычного текста) .


 
sniknik ©   (2013-07-22 11:54) [17]

да, что-то странное, вроде мелочи но жизнь портят, и главное не понятно зачем...

нашел "свою" ошибку (пришлось удалить опен и поставить либре) вот на этой строке "ломается" - Document.GetSheets.RemoveByName(Document.GetSheets.GetByIndex(2).GetName);
ломается из-за мелочи... из-за того, что по умолчанию в Excel-Open создается документ с 3 "листами", а Libre с 1м... (потому, что он "тот" наверное), и получается удаление 3-го, не нужного мне листа валится с ошибкой, хотя и странной какой то (при чем здесь lang ?).

теперь, чтобы работало "под Libre" нужно не удалять лишний "листок" а добавлять не существующий (нужно 2)... а метода на добавление найти не могу ;(, и макрос-ы в Libre не записываются (ну, у меня нет пункта в меню).

у меня тоже просьба, запишите кто нибудь макрос на добавление листа плиз... :), а то очень уж не охота ставить опять Open записывать макрос, переставлять Libre для проверки... и так, подозреваю,  несколько раз.

> упоротого линуксоида
+1, они похоже любят сложности, типа "стоя и в гамаке", и несут это "в массы".


 
Ega23 ©   (2013-07-22 12:10) [18]

Попробуй так
Document.GetSheets.InsertNewByName("bla-bla-lba", 0);


 
sniknik ©   (2013-07-22 13:07) [19]

> Попробуй так
Спасибо!!!

А то я уж сделал по макросу (нашёл машину с OO) -
         VArray:= VarArrayCreate([0, 1], varVariant);
         VArray[0]:= ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
         VArray[1]:= ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
         try
           VArray[0].Value:= "Name";
           VArray[0].Name := "List2";
           VArray[1].Value:= "Index";
           VArray[1].Name := 1;
           Dispatcher.executeDispatch(Frame, ".uno:Insert", "", 0, VArray)
         finally
           VArray[0]:= Unassigned;
           VArray[1]:= Unassigned;
           VArray   := Unassigned;
         end;

и "воткнулся" в следующую проблему... оно диалоговое окно выкидывает, куда вставить, до, после, с каким именем и какой файл в лист вкачать... а на кой оно мне в формируемом отчете? начал искать как закрываеть окно...


 
sniknik ©   (2013-07-22 13:16) [20]

ну все... теперь мы поддерживаем  LibreOffice ! ;)) (может найдется свой "красноглазик" в период пока там еще что-нибудь не поменяют на "правильно, но не так как у "не тех"")


 
Ega23 ©   (2013-07-22 13:25) [21]

Ну это я исключительно с их сайта взял
http://www.openoffice.org/api/docs/common/ref/com/sun/star/sheet/XSpreadsheets.html


 
Ega23 ©   (2013-07-22 13:26) [22]

В смысле, с OpenOffice. А вот как поддерживает (и поддерживает ли вообще) Libre Office .Uno  - сие есть загадка великая.


 
sniknik ©   (2013-07-22 14:03) [23]

> А вот как поддерживает (и поддерживает ли вообще) Libre Office .Uno  - сие есть загадка великая.
поддерживает, проверил уже. и у меня кстати все на .uno, я по другому не нашел как ПивотТаблицу делать, ну когда делал этот отчет. хотя, ИМХО, замороченный метод.

> В смысле, с OpenOffice.
> Опер Офис, после покупки его Ораклом, "уже не тот"
:))) у него документация есть.
а на Libre я даже поиска не нашёл...


 
Ega23 ©   (2013-07-22 15:52) [24]

В общем, "это какой-то позор" (с)



Страницы: 1 вся ветка

Текущий архив: 2014.01.12;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.008 c
15-1374610930
DevilDevil
2013-07-24 00:22
2014.01.12
Да решит коллективный разум бытовую задачу


15-1374592089
Jeer
2013-07-23 19:08
2014.01.12
Как обычно..


2-1363675923
dEN
2013-03-19 10:52
2014.01.12
Ошибка доступа


15-1374834231
MonoLife
2013-07-26 14:23
2014.01.12
Всех сисадминов - с Днем сисадмина!!


15-1374870605
Юрий
2013-07-27 00:30
2014.01.12
С днем рождения ! 27 июля 2013 суббота