On-line: Andrey, гостей 2. Всего: 3 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 295
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.07.07 22:50. Заголовок: Где можно взять примеры работы с OLE Open Office


Всем привет.
В связи с борьбой с пиратами нужно переползать на открытый ОФИС.
А как работать с этим OLE в хХарборе - я не знаю.
Может кто-нибудь поделиться примерами ?

Заранее благодарю.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 34 , стр: 1 2 All [только новые]


Администратор




Пост N: 555
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 25.07.07 07:44. Заголовок: Re:


Неоднократно уже давал этот пример в самых разных местах

Function BrwToZxc(oB)
// -------------------------------------------------------------
// Экспорт обьекта Browse в OpenOffice Calc
// -------------------------------------------------------------
Local oStarManager, oStarDesktop, oDocument, oSheet, oRange
Local nRow := 1, nCol, nCol2, nMerge, oCol, cGrid
Local acHead := {}, lFoot := .f., x, ser
Local nStyle

oStarManager := NewOle('com.sun.star.ServiceManager')

if oStarManager # nil

Begin sequence

oStarDesktop := oStarManager:createInstance('com.sun.star.frame.Desktop')
oDocument := oStarDesktop:LoadComponentFromURL(;
'private:factory/scalc',;
'_blank',;
0,;
{})

oSheet:=oDocument:Sheets:getByIndex(0)


nRow := 1
for nCol := 1 TO oB:ColCount
oCol := oB:GetColumn(nCol)
oRange := oSheet:getCellByPosition(nCol-1, nRow-1)
if ! Empty(oCol:oHeader:aTitles[nRow])
oRange:SetString(OemToAnsi(oCol:heading))
zcCellBorder(oRange, 9)
endif

next

if nRow > 0
zcCellBorder(oSheet:getCellRangeByPosition(0,0,oB:ColCount-1,0), 8)
zcCellBorder(oSheet:getCellRangeByPosition(0,nRow-1,oB:ColCount-1,nRow-1), 9)
oSheet:TitleRows:StartRow := 1
oSheet:TitleRows:EndRow := nRow
oSheet:PrintTitleRows := .t.
endif

oB:GoTop()
while ! oB:HitBottom
nRow++
for nCol := 1 to oB:ColCount
oCol := oB:GetColumn(nCol)
x := Eval(oCol:Block)
if ! Empty(x) .and. ValType(x) == 'C' .and. ! Empty(Val(StrTran(x, "'", '')))
x := Val(StrTran(x, "'", ''))
elseif ValType(x)=='D'
x := DTOC(x)
endif
if oCol:cargo # nil .and. len(oCol:cargo) >= 6 .and.;
ValType(oCol:cargo[6]) == 'C' .and. oCol:cargo[6] = '$'
oSheet:getCellByPosition(nCol-1, nRow-1):NumberFormat := 2
endif
if ! Empty(x)
if ValType(x) == 'C'
oSheet:getCellByPosition(nCol-1, nRow-1):SetString(x)
else
oSheet:getCellByPosition(nCol-1, nRow-1):SetValue(x)
endif
endif
next
oB:Down()
enddo

if oB:lFoots
nRow++
zcCellBorder(oSheet:getCellRangeByPosition(0,nRow-1,oB:ColCount-1,nRow-1), 8)
for nCol := 1 to oB:ColCount
if ! Empty(oB:GetColumn(nCol):footing)
x := oB:GetColumn(nCol):footing
if ! Empty(Val(StrTran(x, "'", '')))
x := Val(StrTran(x, "'", ''))
// elseif oB:GetColumn(nCol):nAjuste = 38
// x := Val(x)
endif
oSheet:getCellByPosition(nCol-1, nRow-1):SetString(x)
endif
next
endif

for nCol := 1 to oB:ColCount
oSheet:getColumns():getByIndex(nCol-1):OptimalWidth := .t.
next

end
endif
Return nil


Static func zcCellBorder(oRange, nNSEW)
Local oBorder := oRange:TableBorder
Local oLine

if nNSEW == 8
oLine := oBorder:TopLine
elseif nNSEW == 9
oLine := oBorder:BottomLine
elseif nNSEW == 10
oLine := oBorder:RightLine
elseif nNSEW == 7
oLine := oBorder:LeftLine
endif
oLine:OuterLineWidth := 10
oLine:InnerLineWidth := 0

if nNSEW == 8
oBorder:TopLine := oLine
elseif nNSEW == 9
oBorder:BottomLine := oLine
elseif nNSEW == 10
oBorder:RightLine := oLine
elseif nNSEW == 7
oBorder:LeftLine := oLine
endif

oRange:TableBorder := oBorder
Return nil


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 557
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 25.07.07 08:50. Заголовок: Re:


Можно еще посмотреть архив форума

http://www.oooforum.org/forum/viewforum.phtml?f=9

Там есть масса примеров
Можно там задать свой вопрос

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 296
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.07.07 12:09. Заголовок: Re:


Паша, спасибо большое.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 558
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 25.07.07 12:26. Заголовок: Re:


Не заметил, еще нужна функция:

Static func NewOle(cServer)
Local oServer, hObj

Begin sequence
hObj := CreateOleObject( cServer )
if OleError() == 0
oServer := TOleAuto():new( hObj )
#ifdef __HARBOUR__
oServer:cClassName := cServer
#endif
endif
end
if oServer == nil
Alert('Ошибка инициализации OLE:' + cServer)
endif
Return oServer

если что-то выдираешь из своей библиотеки, обязательно попадется какая-то нестандартная функция

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 559
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 25.07.07 14:22. Заголовок: Re:


Вот сам наконец-то решил оседлать OO-writer, и еще маленький примерчик

Задача: открыть документ и на место закладки вставить значение

func OOWriter(cFile, cBookmark, cValue)
Local oStarManager, oStarDesktop, oDocument
Local oBookmarks, oBookmark

cFile := StrTran(cFile, "\", "/")
cFile := StrTran(cFile, " ", "%20")

cFile := "file:///" + cFile

oStarManager := NewOle('com.sun.star.ServiceManager')

if oStarManager # nil

Begin sequence

oStarDesktop := oStarManager:createInstance('com.sun.star.frame.Desktop')
oDocument := oStarDesktop:LoadComponentFromURL(;
cFile,'_blank', 0, {})

oBookmarks := oDocument:getBookmarks()

oBookmark := oBookmarks:GetByName(cBookmark)

oBookMark:getAnchor:setString(cValue)

retu nil


Спасибо: 1 
ПрофильЦитата Ответить
постоянный участник




Пост N: 297
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.07.07 21:25. Заголовок: Re:


Спасибо большое, Паша !!!
А можно ли одновременно установить OpenOffice и MsOffice ?
И как тогда это вместе будет работать ?


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 775
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.07.07 21:35. Заголовок: Re:


Andrey пишет:

 цитата:
А можно ли одновременно установить OpenOffice и MsOffice ?


Вот и пробни ;)

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 298
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.07.07 22:20. Заголовок: Re:


Спасибо Дима за добрые пожелания...., а я то думал что сие мне делать не придется ....

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 560
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.07.07 12:20. Заголовок: Re:


конечно можно
я в своих программах в тулбаре помещаю 2 кнопки - экспорт в эксель и оо-калк
если соответствующий офис установлен, работает, ну а на нет суда нет

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 18
Зарегистрирован: 31.05.07
ссылка на сообщение  Отправлено: 30.07.08 15:37. Заголовок: Добрый день уважаемы..


Добрый день уважаемые!
А может кто нибудь подсказать, как узнать закончил SCalc печатать файл или нет?
Просто столкнулся с проблемой во время закрытия документа с параметрами Hidden = .t., который был отправлен на печать.
Может у кого ссылка есть на мануал про эту тему или просто кусочек кода завалялся???
Помогите, плиз...

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 19
Зарегистрирован: 31.05.07
ссылка на сообщение  Отправлено: 01.08.08 09:00. Заголовок: Корректировочки


Ну соврал малость... свойства HIDDEN это было сделано на ООо Васике, в его родной среде

 цитата:
DIM oProperty AS NEW com.sun.star.beans.PropertyValue
SET oProperty.Name = "Hidden"
SET oProperty.Value = True


Так у меня и не получилось на xHb создать невидимый документ
Может у кого получилось? подскажите пожалуйста...

а по поводу предидущего сообщения нашел коечто http://www.oooforum.org/forum/viewtopic.phtml?t=4922 ...
по крайней мере узнал как это делать из-под ООо Васика.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 954
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.08.08 12:34. Заголовок: spair2k пишет: Ну с..


spair2k пишет:

 цитата:
Ну соврал малость... свойства HIDDEN это было сделано на ООо Васике, в его родной среде

цитата:
DIM oProperty AS NEW com.sun.star.beans.PropertyValue
SET oProperty.Name = "Hidden"
SET oProperty.Value = True

Так у меня и не получилось на xHb создать невидимый документ
Может у кого получилось? подскажите пожалуйста...



oStarDesktop := oStarManager:createInstance('com.sun.star.frame.Desktop')

oProperty := oServiceMamager:bridge_GetStruct("com.sun.star.beans.PropertyValue")

oProperty:Name := "Hidden"
oProperty:Value := .T.

Return oStarDesktop:LoadComponentFromURL(;
cFile, '_blank', 0, {oProperty})


Спасибо: 1 
ПрофильЦитата Ответить
постоянный участник


Пост N: 146
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 09.08.09 10:19. Заголовок: OpenOffice уже отк..


OpenOffice уже открывается.
А как открыть имеющийся файл или шаблон для заполнения?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1198
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.08.09 08:23. Заголовок: Vlad04 пишет: А как..


Vlad04 пишет:

 цитата:
А как открыть имеющийся файл или шаблон для заполнения?



oStarManager := TOleAuto():New('com.sun.star.ServiceManager')
oStarDesktop := oStarManager:createInstance('com.sun.star.frame.Desktop')

cFile := StrTran(cFile, "\", "/")
cFile := StrTran(cFile, " ", "%20")

cFile := "file:///" + cFile

aProps := {}

oStarDesktop:LoadComponentFromURL(;
cFile, '_blank', 0, aProps)


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 146
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 26.02.16 12:40. Заголовок: А как можно вставить..


А как можно вставить картинку в ячейку и отформатировать ячейку в размер картинки с привязкой картинки к ячейке?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 147
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 27.02.16 17:44. Заголовок: как вставить картинк..


как вставить картинку разобрался:

Скрытый текст


А вот отформатировать ее по размеру не получается. Может кто знает как можно это сделать?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5489
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.02.16 18:07. Заголовок: MIKHAIL Возможно на..


MIKHAIL
Возможно надо погуглить


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 148
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 16.03.16 13:22. Заголовок: После работы с докум..


После работы с документом, закрываю его oDoc:close(.t.), но Open Office висит в памяти и блокирует временные фалы.
Если же закрывать приложение через oStarDesktop:terminate() то он закрывает и другие открытые документы (writer и calc ).
Как корректно закрывать процесс вызванный именно работой приложения и не затрагивать остальные открытые документы ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 179
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 16.03.16 22:18. Заголовок: Документация...


Когда-то нашел для себя что-то полезное на сайте
https://wiki.openoffice.org/wiki/RU

Есть форум
http://www.forumooo.ru/

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4958
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.06.16 18:27. Заголовок: Есть исходник 2007г...


Есть исходник 2007г. вызова Open Office на хХарборе. Работает до сих пор.
Перетащил на МиниГуи - вешает задачу намертво.

Подскажите пожалуйста, где ошибка ?
Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 34 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 571
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет