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

Тема в разделе "Lotus - Программирование", создана пользователем allex, 4 мар 2009.

  1. allex

    allex Гость

    Имеется код

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

    Код (Text):
    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)
    Подскажите как задать границы ячейкам ?



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

    Код (Text):
        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 )
     
  2. azat20

    azat20 Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    да... помню я очень долго возился с выгрузкой в 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

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

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    дорогие коллеги, объясните мне - ну зачем вы юзаете глюкавый КОМ, ну неуж-то так лень - ХМЛ взять и использовать
    ведь ОО формат для этого и приспособлен и ОО на компе не нужен (тогда)
    Сергей выкладывал примерчик работы с write файлами. ну откройте вы спецификации о ODF...
    http://en.wikipedia.org/wiki/OpenDocument
    или расковыряйте готовый файл и посмотрите ХМЛ
     
  4. allex

    allex Гость

    А кто сказал что на компе он не нужен.
    Офис на машинах как раз и стоит.
     
Загрузка...

Поделиться этой страницей