Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2014.01.12;
Скачать: [xml.tar.bz2];

Вниз

Коллеги, а у кого есть 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.003 c
15-1374558352
DevilDevil
2013-07-23 09:45
2014.01.12
Багтрек Embarcadero


2-1363613249
BioAndrew
2013-03-18 17:27
2014.01.12
Бикубическая интерполяция двухмерного массива


15-1374259994
Фокс Йожин
2013-07-19 22:53
2014.01.12
Старые книги по Delphi


15-1374148630
Ega23
2013-07-18 15:57
2014.01.12
Коллеги, а у кого есть LibreOffice или OpenOffice


2-1363790754
Maximqa58415
2013-03-20 18:45
2014.01.12
Delphi7(Цикл с параметром for)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский