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

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

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

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

Форматирование таблицы [calc]

  • Автор темы allex
  • Дата начала
A

allex

Имеется код

При установке значения border ячйки не принимают границ

Код:
Set xlglob = CreateObject ( "com.sun.star.ServiceManager" ) 
Set Desktop = xlglob.createInstance("com.sun.star.frame.Desktop") 
Set document = Desktop.LoadComponentFromURL("private:factory/scalc","_ blank",0,mass) 
Set sheets=Document.getSheets() 
Set xlWbk = sheets.getByIndex(0) 
....................................................
....................................................

Set oRange = xlWbk.getCellRangeByName("A1:G5") 
oRange.merge(True)
Call oRange.setPropertyValue("CellBackColor", 16764057)

доходит до этого места и вываливается в ошибку

Call oRange.SetPropertyValue("LeftBorder",border)
Call oRange.SetPropertyValue("RightBorder",border)
Call oRange.SetPropertyValue("TopBorder",border)
Call oRange.SetPropertyValue("BottomBorder",border)

Подскажите как задать границы ячейкам ?



Задачка решена

Код:
	Set xlglob = CreateObject ( "com.sun.star.ServiceManager" ) 
Set Desktop = xlglob.createInstance("com.sun.star.frame.Desktop") 
Set document = Desktop.LoadComponentFromURL("private:factory/scalc","_ blank",0,mass) 
Set Border = Desktop.Bridge_GetStruct("com.sun.star.table.BorderLine")
Set sheets=Document.getSheets() 
Set xlWbk = sheets.getByIndex(0) 

...........................................

Set oRange = xlWbk.getCellRangeByName("A1:G5") 
oRange.merge(True)
Call oRange.setPropertyValue("CellBackColor", 16764057)
Border.color = 155
Border.lineDistance = 0
Border.innerLineWidth = 0
Border.outerLineWidth = 1

Call oRange.SetPropertyValue ( "TopBorder" , Border ) 
Call oRange.SetPropertyValue( "BottomBorder" , Border )
Call oRange.SetPropertyValue( "LeftBorder" , Border ) 
Call oRange.SetPropertyValue( "RightBorder" , Border )
 
A

azat20

да... помню я очень долго возился с выгрузкой в Calc.Еще негде спросить, инфы нету. Юзай это:
Call setBorders(cellran, True, True, True, True, 35 , 0)

Sub setBorders(cell As Variant, doTop As Boolean, doLeft As Boolean, doRight As Boolean, doBottom As Boolean, weight As Integer,Color As Long) 'rangeBorders
Set bLine =createStruct(CoreReflection,"com.sun.star.table.BorderLine")
bLine.Color=color
bLine.InnerLineWidth = 0
bLine.LineDistance = 0
bLine.OuterLineWidth =weight
If doLeft Then
Set cell.leftBorder=bline
End If
If doTop Then Set cell.topBorder = bline
If doRight Then Set cell.rightBorder = bline
If doBottom Then Set cell.bottomBorder = bline
End Sub

у меня очень прекрасно работает
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
215
дорогие коллеги, объясните мне - ну зачем вы юзаете глюкавый КОМ, ну неуж-то так лень - ХМЛ взять и использовать
ведь ОО формат для этого и приспособлен и ОО на компе не нужен (тогда)
Сергей выкладывал примерчик работы с write файлами. ну откройте вы спецификации о ODF...

или расковыряйте готовый файл и посмотрите ХМЛ
 
Мы в соцсетях:

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