Page 1 of 2
Using Open Office
Posted: Fri May 22, 2009 4:11 am
by sudip
Hi All,
Is there any way to use Open Office Apps, eg., Calc instead of Excel from HMG.
A discussion regarding this topic will be great helpful for all who are using Open Source Software
Thank you in advace
Regards.
Sudip
Re: Using Open Office
Posted: Fri May 22, 2009 5:24 am
by Rathinagiri
Hi,
I use 95% of open source products including OpenOffice. I would list them, in a short while.
Re: Using Open Office
Posted: Fri May 22, 2009 5:41 am
by mol
I have a pattern to write to open office calc. I will find it later and put on the forum. (I saved it on one of my computers and don't know on which...

)
Re: Using Open Office
Posted: Fri May 22, 2009 5:47 am
by mol
I found that example!!!
It really works!
i don't know, who is author, but regards to him.
It also contains sample to create PDF, but something is wrong with aligning in PDF document.
Re: Using Open Office
Posted: Fri May 22, 2009 6:57 am
by gfilatov
mol wrote:...
i don't know, who is author, but regards to him.
Hello Mol,
The homepage of MiTPRINTO v2.3 for HMG is
http://www.embalajesterra.com/misdoc/pr ... ramas.html

Re: Using Open Office
Posted: Fri May 22, 2009 8:36 am
by mol
of course, Grigory!
I found it during looking patterns with Excel.
Re: Using Open Office
Posted: Fri May 22, 2009 8:50 am
by Rathinagiri
Thanks for the file and the link Mol and Filatov..
Re: Using Open Office
Posted: Fri May 22, 2009 11:43 am
by sudip
Hello Mareck, Grigory,
Thanks a lot
Sorry for my delayed response

(My net connection was out of order for some hours)
Regards.
Sudip
Re: Using Open Office
Posted: Fri May 22, 2009 1:24 pm
by sudip
Hi,
Today, another friend, Antonio searched for the same topic in another group (xHarbour group).
I hope this mail will be helpful for all
Antonio wrote:Sudip,
To seems AutomateIt program (OLE conversor) not running; i obtain a Run time
error at worksheets in
oExcel:CreateObject("Excel.Application")
oExcel:WorkSheets:Count // here RTE
I'm developmeting a layer for to use OLE Calc throw OLE Excel syntax.
I don´t know if this option it's the better ???
Initial layer's code:
Code: Select all
#Define lSISTEMA_CALC .T.
//--------------------------------------------------------------------------
//
FUNCTION CreateObjectExcelLayer()
Local oExcel:= NIL
Local oErr:= NIL
IF !lSISTEMA_CALC
TRY
// Siempre crea objeto (evito algunos problemas pe. en saveas())
oExcel:= CreateObject( "Excel.Application" )
CATCH oErr
MERROR_( " No se pudo conectar con Excel !", OLE2TXTERROR(),
oExcel,;
oErr:SubSystem(),;
oErr:Description,;
oErr:Operation )
oExcel:= NIL
END
ELSE
oExcel:= TExcelLayer():New()
ENDIF
RETURN oExcel
*
//--------------------------------------------------------------------------
//
CLASS TExcelLayer
METHOD New()
// ASSIGN Visible(x) INLINE (msginfo("hola", x))
METHOD Get(cMessage) //INLINE msginfo(cMessage, "falta implementar !")
// Datas Excel simuladas ----------------------------------------
// Estas datas seran las que se manjen desde fuera... pero aqui
// dentro deben tener valores apropiados
DATA oSheet
DATA WorkBooks
DATA TmpWorkSheets HIDDEN
METHOD WorkSheets(nSheet)
#Define ACTIVE_SHEET ::oOOCalc:getCurrentController():getActiveSheet()
ACCESS ActiveSheet INLINE TWorkSheetExcelLayer():New(Self, NIL, NIL,
ACTIVE_SHEET)
//---------------------------------------------------------------
// Datas Calc reales --------------------------------------------
DATA oOOEngine READONLY
DATA oOOCore READONLY
DATA oOODesktop READONLY
DATA oOOCalc READONLY
//---------------------------------------------------------------
ENDCLASS
*
//--------------------------------------------------------------------------
//
METHOD WorkSheets(nSheet)
Local xRet:= NIL
#Define lCOMO_DATA PCount() == 0
IF lCOMO_DATA
xRet:= ::TmpWorkSheets
ELSE
xRet:= TWorkSheetExcelLayer():New(Self, NIL, nSheet- 1)
ENDIF
RETURN xRet
//--------------------------------------------------------------------------
//
METHOD Get(cMessage)
cMessage:= Upper(cMessage)
DO CASE
CASE cMessage == "ACTIVESHEET"
xRet:= ::ActiveSheet
*
CASE .T.
MERROR_("Falta implementar mensaje", cMessage)
ENDCASE
RETURN xRet
*
//--------------------------------------------------------------------------
//
METHOD New() CLASS TExcelLayer
Local oErr
*
TRY
::oOOEngine:= CreateObject( "com.sun.star.ServiceManager" )
CATCH oErr
MERROR_( " No se pudo conectar con Open Office !", OLE2TXTERROR(),
::oOOEngine,;
oErr:SubSystem(),;
oErr:Description,;
oErr:Operation )
RETURN NIL
END
::oOOcore :=
::oOOEngine:CreateInstance("com.sun.star.refelection.CoreReflection")
::oOODesktop := ::oOOEngine:createInstance("com.sun.star.frame.Desktop")
*
::oOOCalc := ::oOODesktop:loadComponentFromURL("private:factory/scalc",
"_blank", 0, {})
::WorkBooks := TWorkBooksExcelLayer():New(Self)
::TmpWorkSheets:= TWorkSheetsExcelLayer():New(Self)
RETURN Self
*
*
*
//--------------------------------------------------------------------------
//
//--------------------------------------------------------------------------
//
CLASS TWorkBooksExcelLayer
EXPORTED:
METHOD New()
METHOD Add()
HIDDEN:
DATA oExcelLayer
ENDCLASS
//--------------------------------------------------------------------------
//
METHOD New(oExcelLayer) CLASS TWorkBooksExcelLayer
::oExcelLayer:= oExcelLayer
RETURN Self
//--------------------------------------------------------------------------
//
METHOD Add() CLASS TWorkBooksExcelLayer
Local oBook
oBook:= TWorkBookExcelLayer():New(::oExcelLayer) //, Self)
RETURN oBook
//--------------------------------------------------------------------------
//
CLASS TWorkBookExcelLayer
EXPORTED:
METHOD New()
HIDDEN:
DATA oExcelLayer
DATA oWorkBooksExcelLayer
ENDCLASS
//--------------------------------------------------------------------------
//
METHOD New(oExcelLayer, oWorkBooksExcelLayer) CLASS TWorkBookExcelLayer
::oExcelLayer := oExcelLayer
::oWorkBooksExcelLayer:= oWorkBooksExcelLayer
RETURN Self
//--------------------------------------------------------------------------
//
CLASS TWorkSheetsExcelLayer
EXPORTED:
METHOD New()
// // -1 pq parece que indica una hoja mas de la cuenta !!!
// ACCESS Count INLINE Len( ::oExcelLayer:oOOCalc:getSheets() )- 1
ACCESS Count INLINE ::oExcelLayer:oOOCalc:getSheets():getCount()
HIDDEN:
DATA oExcelLayer
ENDCLASS
//--------------------------------------------------------------------------
//
METHOD New(oExcelLayer) CLASS TWorkSheetsExcelLayer
::oExcelLayer:= oExcelLayer
RETURN Self
*
//--------------------------------------------------------------------------
//
CLASS TWorkSheetExcelLayer
EXPORTED:
METHOD New()
METHOD Delete() INLINE
::oExcelLayer:oOOCalc:getSheets():removeByName(::oOOSheet:Name )
ACCESS Name INLINE ::oOOSheet:Name
ASSIGN Name(cName) INLINE ::oOOSheet:Name:= cName
HIDDEN:
DATA oExcelLayer
DATA oWorkSheetsExcelLayer
DATA nSheet
DATA oOOSheet
ENDCLASS
//--------------------------------------------------------------------------
//
METHOD New(oExcelLayer, oWorkSheetsExcelLayer, nSheet, oOOSheet) CLASS
TWorkSheetExcelLayer
::oExcelLayer := oExcelLayer
::oWorkSheetsExcelLayer:= oWorkSheetsExcelLayer
::nSheet := nSheet
DO CASE
CASE ::nSheet != NIL
::oOOSheet:= ::oExcelLayer:oOOCalc:getSheets():getByIndex(nSheet)
CASE oOOSheet != NIL
::oOOSheet:= oOOSheet
ENDCASE
RETURN Self
Regards.
Sudip
Re: Using Open Office
Posted: Fri May 22, 2009 1:50 pm
by sudip
Hi,
I also got some information regarding OpenOffice from another group
Using OpenOffice Calc with MiniGui
http://www.embalajesterra.com/misdoc/ma ... fice1.html
Using OpenOffice Write with MiniGui
http://www.embalajesterra.com/misdoc/ma ... fice2.html
Thank you all.
With best regards.
Sudip