Trabalho com progress 10.1a com o EMS e HCM tenho alguns programas que geram planilhas em Excel, mas agora preciso desenvolver no BROffice, alguém tem algum exemplo que pode me ajudar?
m.heckler, O Office suporta um monte de funcionalidades (acho que quase tudo) via automação OLE. Eu não conheço o BROffice, mas ele suporta isto também? Caso sim é fácil, instância os objetos e chama os métodos, da mesma forma como você faz com o Office. Se ele suporta isto tudo deve ter uma documentação também.
Pois é, não sei se suporta, por isso estou gostaria que alguém que desenvolva em Progress, me de algum exemplo de programa que abra ou exporte os dados para o BROffice.
Ta ai um exemplo bem simples, espero que ajude. Código: DEF VAR LIST-PLAN AS C INIT "PLAN1,PLAN2". DEF VAR OBJ-SERVICE AS COM-HANDLE. DEF VAR OBJ-DESKTOP AS COM-HANDLE. DEF VAR OBJ-WORK AS COM-HANDLE. DEF VAR OBJ-PLAN AS COM-HANDLE EXTENT 40. DEF VAR OBJ-WORKCOL AS COM-HANDLE. DEF VAR OBJ-COL AS COM-HANDLE. DEF VAR CC AS RAW. DEF VAR OLINBORDA AS COM-HANDLE. def var loop as int. def var iLinha as int. def var iCol as int. CREATE "com.sun.star.ServiceManager" OBJ-SERVICE. OBJ-DESKTOP = OBJ-SERVICE:createinstance("com.sun.star.frame.Desktop"). OBJ-WORK = OBJ-DESKTOP:loadComponentFromURL("file:///c:/modelo.ots","_blank",0,cc). def temp-table tt-relatorio field codigo as int field nome as char format "X(30)" field data as date. do loop = 1 to 10. create tt-relatorio. assign tt-relatorio.codigo = loop tt-relatorio.nome = "Fulano-" + string(loop) tt-relatorio.data = today + loop. end. DO LOOP = 1 TO 2. if trim(entry(loop,list-plan)) = ? then leave. else assign OBJ-PLAN[loop] = OBJ-WORK:Sheets:getByIndex(loop - 1) OBJ-PLAN[loop]:name = entry(loop,list-plan). END. oLinBorda = OBJ-PLAN[1]:getPropertyValue("TopBorder"). oLinBorda:OuterLineWidth = 40. OBJ-WORKCOL = OBJ-PLAN[1]:getColumns(). OBJ-COL = OBJ-WORKCOL:getByIndex(0). OBJ-COL:width = 5 * 250. OBJ-COL = OBJ-WORKCOL:getByIndex(1). OBJ-COL:width = 10 * 250. OBJ-COL = OBJ-WORKCOL:getByIndex(2). OBJ-COL:width = 30 * 250. assign iLinha = 0 iCol = 0. for each tt-relatorio. OBJ-PLAN[1]:GetCellByPosition(iCol, iLinha):STRING = string(tt-relatorio.codigo). OBJ-PLAN[1]:GetCellByPosition(iCol,iLinha):setPropertyvalue("HoriJustify", 3). /* Alinhamento 1-Esquerda 2-Centro 3-Direita */ OBJ-PLAN[1]:GetCellByPosition(iCol,iLinha):setPropertyValue("CharWeight",200). /* TEXTO EM NEGRITO */ OBJ-PLAN[1]:GetCellByPosition(iCol,iLinha):setPropertyValue("TopBorder", oLinBorda). OBJ-PLAN[1]:GetCellByPosition(iCol,iLinha):setPropertyValue("RightBorder", oLinBorda). OBJ-PLAN[1]:GetCellByPosition(iCol,iLinha):setPropertyValue("LeftBorder", oLinBorda). OBJ-PLAN[1]:GetCellByPosition(iCol,iLinha):setPropertyValue("BottomBorder", oLinBorda). iCol = iCol + 1. OBJ-PLAN[1]:GetCellByPosition(iCol,iLinha):STRING = string(tt-relatorio.data). OBJ-PLAN[1]:GetCellByPosition(iCol,iLinha):setPropertyvalue("HoriJustify", 2). OBJ-PLAN[1]:GetCellByPosition(iCol,iLinha):setPropertyValue("CharWeight",0). OBJ-PLAN[1]:GetCellByPosition(iCol,iLinha):setPropertyValue("TopBorder", oLinBorda). OBJ-PLAN[1]:GetCellByPosition(iCol,iLinha):setPropertyValue("RightBorder", oLinBorda). OBJ-PLAN[1]:GetCellByPosition(iCol,iLinha):setPropertyValue("LeftBorder", oLinBorda). OBJ-PLAN[1]:GetCellByPosition(iCol,iLinha):setPropertyValue("BottomBorder", oLinBorda). iCol = iCol + 1. OBJ-PLAN[1]:GetCellByPosition(iCol,iLinha):STRING = tt-relatorio.nome. OBJ-PLAN[1]:GetCellByPosition(iCol,iLinha):setPropertyvalue("HoriJustify", 1). OBJ-PLAN[1]:GetCellByPosition(iCol,iLinha):setPropertyValue("CharWeight",0). OBJ-PLAN[1]:GetCellByPosition(iCol,iLinha):setPropertyValue("TopBorder", oLinBorda). OBJ-PLAN[1]:GetCellByPosition(iCol,iLinha):setPropertyValue("RightBorder", oLinBorda). OBJ-PLAN[1]:GetCellByPosition(iCol,iLinha):setPropertyValue("LeftBorder", oLinBorda). OBJ-PLAN[1]:GetCellByPosition(iCol,iLinha):setPropertyValue("BottomBorder", oLinBorda). assign iLinha = iLinha + 1 iCol = 0. end.