Имя: Пароль:
1C
1С v8
1C + Libre Office Calc
0 AlexandrWRM
 
24.06.14
07:16
Здравствуйте!
Вроде все ветки перечитал, так, что задам вопрос:
В связи с переходом с ms на Lof, возникла необходимость переделать кучу обработок. И если с Writer не возникло проблем, то с одной из обработок формирующей книгу Calc -возникли. Разбирался по книге, скачанной с оф сайта Lof.
Получаю нужный лист
Листы = Book.getSheets();
Лист = Листы.getByIndex(3);
Получаю, нужную мне ячейку и устанавливаю значение
Лист.getCellByPosition(2,3).setString("Код"); //Здесь проблем нет.

Необходимы следующие методы, которые никак не хотят у меня работать (
1)Создать новый лист;
2)Сделать обводку (рамку) области;
3)Установить цвет ячейки;
4)Установить размер шрифта;
5)Установки Шрифта (наклонные/ жирный);
6)Объединение диапазона;
)

К, примеру, по книге Лист.getCellByPosition(2,3).setPropertyValue( "BackColor", 6710932); выдает ошибку (Произошла исключительная ситуация ([automation bridge] ): com.sun.star.beans.UnknownPropertyException:).

Может у кого нибудь есть пример обработки или кусок кода, где корректно работают эти методы. Буду очень признателен Libre Office (Версия: 4.2.4.2).
1 AlexandrWRM
 
24.06.14
09:40
Ну, помогите, люди добрые.
2 mastodont
 
24.06.14
09:57
(1) а в LO есть запись макроса? может ей воспользоваться?
либо почитать доку по LO.
3 AlexandrWRM
 
24.06.14
11:38
(2)
Да доку я читаю. Что то по ней не получается разобраться пока. На счет макросов- точно не знаю. Сейчас буду пробовать.
4 Йохохо
 
24.06.14
11:41
'Author: Sasa Kelecevic
'email:  [email protected]
Sub ExampleSetValue
  Dim oDoc As Object, oSheet As Object, oCell As Object
  oDoc=ThisComponent
  oSheet=oDoc.Sheets.getByName("Sheet1")
  oCell=oSheet.getCellByPosition(0,0) 'A1
  oCell.setValue(23658)
  'oCell.NumberFormat=2   '23658.00
  'oCell.SetString("oops")
  'oCell.setFormula("=FUNCTION()")
  'oCell.IsCellBackgroundTransparent = TRUE
  'oCell.CellBackColor = RGB(255,141,56)
End Sub
5 AlexandrWRM
 
24.06.14
12:58
(4) Большое спасибо. oCell.CellBackColor = RGB(255,141,56) - Работает.
6 AlexandrWRM
 
24.06.14
14:20
разбираюсь по гайду LOF

Вот небольшой отрывок для добавления обрамления к диапазону ячейки

oBorder = ServiceManager.Bridge_GetStruct("com.sun.star.table.BorderLine"); //Объявляем объект "обрамление"
oBorder.Color = "6710932"; //"Задаем цвет обрамления"
oBorder.OuterLineWidth = "100"; //"Задаем толщину линии обрамления"
        
Лист.getCellRangeByName("D10:E20").TopBorder = oBorder; //получаем диапазон ячеек и выделяем верхнюю границу.

Выделение остальных границ:
LeftBorder
RightBorder
TopBorder
BottomBorder
BorderDistance
LeftBorderDistance
RightBorderDistance
TopBorderDistance
BottomBorderDistance
7 Йохохо
 
24.06.14
14:23
http://www.pitonyak.org/AndrewMacro.odt примеры по ОО
8 AlexandrWRM
 
25.06.14
05:00
(7)
Спасибо. У меня такой гайд есть. Но не все, почему то работает от туда (
9 AlexandrWRM
 
27.06.14
05:07
Вообщем если кому то понадобится вот, что получилось нарыть:
1)Создать новый лист;
Листы = Book.getSheets();
Листы.insertNewByName("CreatedSheet", 1)
2)Сделать обводку (рамку) области;
Range = Лист.getCellRangeByName(""B2:C6"");
oBorder = ServiceManager.Bridge_GetStruct("com.sun.star.table.BorderLine");
oBorder.Color = "4000000";
oBorder.OuterLineWidth = "35";
Range.TopBorder = oBorder;
3)Установить цвет ячейки;
Лист.getCellByPosition(1,3).CellBackColor = "3000000"; //RGB
4)Установить размер шрифта;
Лист.getCellByPosition(1,12).CharWeight = Размер;
5)Установки Шрифта (наклонные/ жирный);
MakePropertyValue("Italic", True)
6)Объединение диапазона;
Range.Merge();