* utils/hbmk2/hbmk2.hbp
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/Makefile
! fixed to not run shell in corner case of:
hbmk2 -plugin=my.hb [...]
+ documented one missing script/shell API
+ refactored hbmk2/hbshell code to not utilize file wide
STATIC variables. It allows to _compile_ hbmk2.prg
regardless of -n option usage
+ added some black magic to be able to _run_ hbmk2.prg
with or without using -n option
+ additional tricks to avoid defining any unnecessary
or potentially colliding public functions. It means
hbmk2/hbrun can now run _itself_ as a script.
both as .hrb and .prg flavor and regardless of
-n option usage.
* contrib/hbcurl/hbcurl.ch
+ added HB_CURLFTP_CREATE_DIR* constants
* contrib/hbcurl/tests/ftp_uldl.prg
! updated FTP test URL
* cleaned configuration parameters to be strictly
in sync with libcurl docs
+ do not disable SSL host/peer verifications
* tests/testhrb.prg
* src/vm/runner.c
* misc comment cleanup
* tests/testhtml.prg
* code cleanup
* contrib/gtwvg/gtwgud.c
* contrib/gtwvg/gtwvgd.c
* contrib/hbgt/bitflags.c
* contrib/hbmysql/readme.txt
* contrib/hbmysql/tests/dbf2mysq.prg
* contrib/hbmysql/tsqlbrw.prg
* contrib/hbtip/mail.prg
* contrib/rddads/ads1.c
* contrib/xhb/dumpvar.prg
* contrib/xhb/xhbmemo.prg
* contrib/xhb/xhbtedit.prg
* doc/gtapi.txt
* extras/gtwvw/gtwvwd.c
* extras/hbxlsxml/tests/example.prg
* extras/httpsrv/uhttpd.prg
* src/debug/dbgtarr.prg
* src/debug/dbgthsh.prg
* src/lang/l_sk.c
* src/rdd/dbfcdx/dbfcdx1.c
* src/rdd/usrrdd/rdds/arrayrdd.prg
* src/rtl/filesys.c
* src/rtl/gtos2/gtos2.c
* src/rtl/gtwvt/gtwvt.c
* src/rtl/net.c
* src/rtl/teditor.prg
* src/vm/thread.c
* website/news1.html
* cleaned all remaining national/misc dates
to be in ANSI format (YYYY.MM.DD)
273 lines
9.7 KiB
Plaintext
273 lines
9.7 KiB
Plaintext
/*
|
|
* $Id$
|
|
*/
|
|
|
|
/*
|
|
* Harbour Project source code:
|
|
*
|
|
* Copyright 2011 Fausto Di Creddo Trautwein, ftwein@yahoo.com.br
|
|
* www - http://harbour-project.org
|
|
*
|
|
* Thanks TO Robert F Greer, PHP original version
|
|
* http://sourceforge.net/projects/excelwriterxml/
|
|
*
|
|
* This program is free software; you can redistribute it AND/OR modify
|
|
* it under the terms of the GNU General PUBLIC License as published by
|
|
* the Free Software Foundation; either version 2, OR( at your option )
|
|
* any later version.
|
|
*
|
|
* This program is distributed IN the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General PUBLIC License FOR more details.
|
|
*
|
|
* You should have received a copy of the GNU General PUBLIC License
|
|
* along WITH this software; see the file COPYING.txt. IF NOT, write TO
|
|
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
|
* Boston, MA 02111-1307 USA( OR visit the web site http://www.gnu.org/ ).
|
|
*
|
|
* As a special exception, the Harbour Project gives permission FOR
|
|
* additional uses of the text contained IN its release of Harbour.
|
|
*
|
|
* The exception is that, IF you link the Harbour libraries WITH other
|
|
* files TO produce an executable, this does NOT by itself cause the
|
|
* resulting executable TO be covered by the GNU General PUBLIC License.
|
|
* Your use of that executable is IN no way restricted on account of
|
|
* linking the Harbour library code into it.
|
|
*
|
|
* This exception does NOT however invalidate any other reasons why
|
|
* the executable file might be covered by the GNU General PUBLIC License.
|
|
*
|
|
* This exception applies only TO the code released by the Harbour
|
|
* Project under the name Harbour. IF you copy code FROM other
|
|
* Harbour Project OR Free Software Foundation releases into a copy of
|
|
* Harbour, as the General PUBLIC License permits, the exception does
|
|
* NOT apply TO the code that you add IN this way. TO avoid misleading
|
|
* anyone as TO the status of such modified files, you must delete
|
|
* this exception notice FROM them.
|
|
*
|
|
* IF you write modifications of your own FOR Harbour, it is your choice
|
|
* whether TO permit this exception TO apply TO your modifications.
|
|
* IF you DO NOT wish that, delete this exception notice.
|
|
*
|
|
*/
|
|
|
|
#require "hbxlsxml"
|
|
|
|
PROCEDURE Main()
|
|
|
|
LOCAL oXml, oSheet, xarquivo := "example.xml"
|
|
LOCAL i, xqtddoc, xttotnot, xtbascal, xtvlricm, xtbasipi, xtvlripi, aDoc, nLinha
|
|
LOCAL xEmpresa
|
|
LOCAL xDataImp
|
|
LOCAL xTitulo
|
|
LOCAL xPeriodo
|
|
LOCAL xOrdem
|
|
LOCAL oObj
|
|
|
|
SET DATE ANSI
|
|
|
|
oXml := ExcelWriterXML():New( xarquivo )
|
|
oXml:setOverwriteFile( .T. )
|
|
|
|
oObj := oXml:addStyle( "textLeft" )
|
|
oObj:alignHorizontal( "Left" )
|
|
oObj:alignVertical( "Center" )
|
|
oObj:fontSize( 10 )
|
|
|
|
oObj := oXml:addStyle( "textLeftWrap" )
|
|
oObj:alignHorizontal( "Left" )
|
|
oObj:alignVertical( "Center" )
|
|
oObj:alignWraptext()
|
|
oObj:fontSize( 10 )
|
|
|
|
oObj := oXml:addStyle( "textLeftBold" )
|
|
oObj:alignHorizontal( "Left" )
|
|
oObj:alignVertical( "Center" )
|
|
oObj:fontSize( 10 )
|
|
oObj:setFontBold()
|
|
|
|
oObj := oXml:addStyle( "textLeftBoldCor" )
|
|
oObj:alignHorizontal( "Left" )
|
|
oObj:alignVertical( "Center" )
|
|
oObj:fontSize( 10 )
|
|
oObj:setFontBold()
|
|
oObj:bgColor( "lightblue" )
|
|
oObj:alignWraptext()
|
|
|
|
oObj := oXml:addStyle( "textRight" )
|
|
oObj:alignHorizontal( "Right" )
|
|
oObj:alignVertical( "Center" )
|
|
oObj:fontSize( 10 )
|
|
|
|
oObj := oXml:addStyle( "textRightBold" )
|
|
oObj:alignHorizontal( "Right" )
|
|
oObj:alignVertical( "Center" )
|
|
oObj:fontSize( 10 )
|
|
oObj:setFontBold()
|
|
|
|
oObj := oXml:addStyle( "textRightBoldCor" )
|
|
oObj:alignHorizontal( "Right" )
|
|
oObj:alignVertical( "Center" )
|
|
oObj:fontSize( 10 )
|
|
oObj:setFontBold()
|
|
oObj:bgColor( "lightblue" )
|
|
oObj:alignWraptext()
|
|
|
|
oObj := oXml:addStyle( "numberRight" )
|
|
oObj:alignHorizontal( "Right" )
|
|
oObj:alignVertical( "Center" )
|
|
oObj:setNumberFormat( "#,##0.00" )
|
|
oObj:fontSize( 10 )
|
|
|
|
oObj := oXml:addStyle( "numberRightBold" )
|
|
oObj:alignHorizontal( "Right" )
|
|
oObj:alignVertical( "Center" )
|
|
oObj:setNumberFormat( "#,##0.00" )
|
|
oObj:fontSize( 10 )
|
|
oObj:setFontBold()
|
|
|
|
oObj := oXml:addStyle( "numberRightBoldCor" )
|
|
oObj:alignHorizontal( "Right" )
|
|
oObj:alignVertical( "Center" )
|
|
oObj:setNumberFormat( "#,##0.00" )
|
|
oObj:fontSize( 10 )
|
|
oObj:setFontBold()
|
|
oObj:bgColor( "lightblue" )
|
|
|
|
oObj := oXml:addStyle( "numberRightZero" )
|
|
oObj:alignHorizontal( "Right" )
|
|
oObj:alignVertical( "Center" )
|
|
oObj:setNumberFormat( "#,##0.00;[Red]-#,##0.00;;@" ) //"#,###.00")
|
|
oObj:fontSize( 10 )
|
|
oObj:setFontBold()
|
|
|
|
oObj := oXml:addStyle( "Cabec" )
|
|
oObj:alignHorizontal( "Left" )
|
|
oObj:alignVertical( "Center" )
|
|
oObj:fontSize( 12 )
|
|
oObj:setFontBold()
|
|
|
|
oObj := oXml:addStyle( "CabecRight" )
|
|
oObj:alignHorizontal( "Right" )
|
|
oObj:alignVertical( "Center" )
|
|
oObj:fontSize( 12 )
|
|
oObj:setFontBold()
|
|
|
|
oSheet := oXml:addSheet( "Plan1" )
|
|
|
|
oObj := oSheet
|
|
oObj:columnWidth( 1, 70 ) // N.Fiscal
|
|
oObj:columnWidth( 2, 20 ) // TM
|
|
oObj:columnWidth( 3, 70 ) // Data Movto
|
|
oObj:columnWidth( 4, 70 ) // Data Emis.
|
|
oObj:columnWidth( 5, 50 ) // CFOP
|
|
oObj:columnWidth( 6, 50 ) // Cod. Cliente/Fornecedor
|
|
oObj:columnWidth( 7, 300 ) // Nome Cliente/Fornecedor
|
|
oObj:columnWidth( 8, 20 ) // UF
|
|
oObj:columnWidth( 9, 80 ) // Vlr.Tot.
|
|
oObj:columnWidth( 10, 80 ) // Base Calc.
|
|
oObj:columnWidth( 11, 80 ) // Vlr ICMS
|
|
oObj:columnWidth( 12, 80 ) // Base IPI
|
|
oObj:columnWidth( 13, 80 ) // Valor IPI
|
|
|
|
xEmpresa := "EMPRESA DEMONSTRACAO LTDA"
|
|
xDataImp := "2011.03.22"
|
|
xTitulo := "RELATORIO PARA DEMONSTRAR XML EXCEL"
|
|
xPeriodo := "2011.02.01 a 2011.02.28"
|
|
xOrdem := "DATA DE EMISSAO"
|
|
|
|
nLinha := 0
|
|
|
|
oObj:writeString( ++nLinha, 1, xEmpresa , "Cabec" )
|
|
oObj:cellMerge( nLinha, 1, 5, 0 )
|
|
oObj:writeString( nLinha, 12, "Data:" + xDataImp , "CabecRight" )
|
|
oObj:cellMerge( nLinha, 12, 1, 0 )
|
|
oObj:writeString( ++nLinha, 1, xTitulo , "Cabec" )
|
|
oObj:cellMerge( nLinha, 1, 5, 0 )
|
|
oObj:writeString( ++nLinha, 1, xPeriodo , "Cabec" )
|
|
oObj:cellMerge( nLinha, 1, 5, 0 )
|
|
oObj:writeString( ++nLinha, 1, xOrdem , "Cabec" )
|
|
oObj:cellMerge( nLinha, 1, 5, 0 )
|
|
|
|
oObj := oSheet
|
|
oObj:writeString( ++nLinha, 1, "N.Fiscal" , "textLeftBoldCor" )
|
|
oObj:writeString( nLinha, 2, "TM" , "textLeftBoldCor" )
|
|
oObj:writeString( nLinha, 3, "Data Movto" , "textLeftBoldCor" )
|
|
oObj:writeString( nLinha, 4, "Data Emis." , "textLeftBoldCor" )
|
|
oObj:writeString( nLinha, 5, "CFOP" , "textLeftBoldCor" )
|
|
oObj:writeString( nLinha, 6, "Codigo" , "textLeftBoldCor" )
|
|
oObj:writeString( nLinha, 7, "Cliente/Fornecedor", "textLeftBoldCor" )
|
|
oObj:writeString( nLinha, 8, "UF" , "textLeftBoldCor" )
|
|
oObj:writeString( nLinha, 9, "Vlr.Tot." , "textRightBoldCor" )
|
|
oObj:writeString( nLinha, 10, "Base Calc." , "textRightBoldCor" )
|
|
oObj:writeString( nLinha, 11, "Vlr ICMS" , "textRightBoldCor" )
|
|
oObj:writeString( nLinha, 12, "Base IPI" , "textRightBoldCor" )
|
|
oObj:writeString( nLinha, 13, "Valor IPI" , "textRightBoldCor" )
|
|
|
|
aDoc := {}
|
|
FOR i := 1 TO 40
|
|
AAdd( aDoc, ;
|
|
{ StrZero( i, 8 ), ;
|
|
"VE", ;
|
|
Date() - 49 - i, ;
|
|
Date() - 50 - i, ;
|
|
"5.102", ;
|
|
StrZero( i, 5 ), ;
|
|
"NOME DO CLIENTE TESTE " + hb_ntos( i ), ;
|
|
"PR", ;
|
|
i * 100, ;
|
|
i * 100 * 0.90, ;
|
|
i * 100 * 0.90 * 0.12, ;
|
|
i * 100, ;
|
|
i * 100 * 0.10 } )
|
|
NEXT
|
|
|
|
xqtddoc := xttotnot := xtbascal := xtvlricm := xtbasipi := xtvlripi := 0
|
|
|
|
FOR i := 1 TO 40
|
|
oObj := oSheet
|
|
oObj:writeString( ++nLinha, 1, aDoc[ i, 1 ], "textLeft" )
|
|
oObj:writeString( nLinha, 2, aDoc[ i, 2 ], "textLeft" )
|
|
oObj:writeString( nLinha, 3, DToC( aDoc[ i, 3 ] ), "textLeft" )
|
|
oObj:writeString( nLinha, 4, DToC( aDoc[ i, 4 ] ), "textLeft" )
|
|
oObj:writeString( nLinha, 5, aDoc[ i, 5 ], "textLeft" )
|
|
oObj:writeString( nLinha, 6, aDoc[ i, 6 ], "textLeft" )
|
|
oObj:writeString( nLinha, 7, aDoc[ i, 7 ], "textLeft" )
|
|
oObj:writeString( nLinha, 8, aDoc[ i, 8 ], "textLeft" )
|
|
oObj:writeNumber( nLinha, 9, aDoc[ i, 9 ], "numberRight" )
|
|
oObj:writeNumber( nLinha, 10, aDoc[ i, 10 ], "numberRight" )
|
|
oObj:writeNumber( nLinha, 11, aDoc[ i, 11 ], "numberRight" )
|
|
oObj:writeNumber( nLinha, 12, aDoc[ i, 12 ], "numberRight" )
|
|
oObj:writeNumber( nLinha, 13, aDoc[ i, 13 ], "numberRight" )
|
|
|
|
xqtddoc++
|
|
xttotnot += aDoc[ i, 9 ]
|
|
xtbascal += aDoc[ i, 10 ]
|
|
xtvlricm += aDoc[ i, 11 ]
|
|
xtbasipi += aDoc[ i, 12 ]
|
|
xtvlripi += aDoc[ i, 13 ]
|
|
NEXT
|
|
|
|
oObj := oSheet
|
|
oObj:writeString( ++nLinha, 1, "", "textLeft" )
|
|
oObj:writeString( nLinha, 2, "", "textLeft" )
|
|
oObj:writeString( nLinha, 3, "", "textLeft" )
|
|
oObj:writeString( nLinha, 4, "", "textLeft" )
|
|
oObj:writeString( nLinha, 5, "", "textLeft" )
|
|
oObj:writeString( nLinha, 6, "", "textLeft" )
|
|
oObj:writeString( nLinha, 7, "TOTAL ==> " + hb_ntos( xqtddoc ) + " document(s)", "textLeftBold" )
|
|
oObj:writeString( nLinha, 8, "", "textLeft" )
|
|
oObj:writeFormula( "Number", nLinha, 9, "=SUM(R[-40]C:R[-1]C)", "numberRightBold" )
|
|
#if 0
|
|
oObj:writeNumber( nLinha, 9, xttotnot, "numberRightBold" )
|
|
#endif
|
|
oObj:writeNumber( nLinha, 10, xtbascal, "numberRightBold" )
|
|
oObj:writeNumber( nLinha, 11, xtvlricm, "numberRightBold" )
|
|
oObj:writeNumber( nLinha, 12, xtbasipi, "numberRightBold" )
|
|
oObj:writeNumber( nLinha, 13, xtvlripi, "numberRightBold" )
|
|
|
|
oXml:writeData( xarquivo )
|
|
|
|
RETURN
|