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

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

allex

#1
Имеется код

При установке значения 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 )
 

azat20

Well-known member
22.07.2008
244
0
#2
да... помню я очень долго возился с выгрузкой в 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

нет, пердело совершенство
Премиум
27.08.2008
6 567
263
#3
дорогие коллеги, объясните мне - ну зачем вы юзаете глюкавый КОМ, ну неуж-то так лень - ХМЛ взять и использовать
ведь ОО формат для этого и приспособлен и ОО на компе не нужен (тогда)
Сергей выкладывал примерчик работы с write файлами. ну откройте вы спецификации о ODF...
http://en.wikipedia.org/wiki/OpenDocument
или расковыряйте готовый файл и посмотрите ХМЛ