Page 2 of 3

Re: Announcing DrXlsx 1.0 by Charles Kwon

PostPosted: Mon Aug 28, 2023 1:16 pm
by Jimmy
hi Chalres,

your LIB work GREAT, thx

it is a "normal" that RAM is "limited" for 32 Bit App
i have "hope" it does "write" when have "read" but all seems to go to RAM

when it "crash" there is no XLSx, you need to "close" to "write" Excel Sheet

Question : is it possible to use a Thread to "write" what have been "read" before :?:

Re: Announcing DrXlsx 1.0 by Charles Kwon

PostPosted: Mon Sep 04, 2023 9:27 pm
by Jimmy
hi,

do you have a Sample how to "insert" Image into Excel Sheet using DrXlsx LIB :?:

Code: Select all  Expand view
  /* Insert an image. */
   worksheet_insert_image( worksheet, 1, 2, "hb_logo.png" )

   /* Insert an image with options. */
   options := {"x_scale" => .5, "y_scale" => .5 }
   worksheet_insert_image_opt( worksheet, CELL("B15"), "hb_logo.png", options )

   options := {"x_offset"=> 10 , "y_offset" => 5 }
   worksheet_insert_image_opt( worksheet, CELL("G2"), "hb_logo.png", options )

these Function seems also be in DrXlsx LIB but how to use it ... :?:

Re: Announcing DrXlsx 1.0 by Charles Kwon

PostPosted: Thu Sep 21, 2023 3:48 pm
by Horizon
Hi

When will it be released?

Thank you to those who contributed.

Re: Announcing DrXlsx 1.0 by Charles Kwon

PostPosted: Thu Oct 12, 2023 6:01 pm
by Eroni
Hello everybody.
I'm trying to use the DrXlsx lib, but I can't generate the executable for a small example, could anyone tell me what's missing or am I doing it wrong?
is DrXlsx32x_bcc.lib is correct to my case, ok?
Thank you all.
Code: Select all  Expand view

#include "fivewin.ch"
FUNCTION Main()
    LOCAL oXlsx := TDrXlsx():New()

    SET DATE FORMAT "YYYY-MM-DD"

    oXlsx:CreateFile("d:\test.xlsx")
    oXlsx:WriteString(0,0,"Sample Head")
    oXlsx:WriteString(1,0,"Hello World!")
    oXlsx:Close()

RETURN NIL
 


Code: Select all  Expand view
FiveWin for xHarbour 23.04 - Apr. 2023          Harbour development power
(c) FiveTech 1993-2023 for Microsoft Windows 9X/NT/200X/ME/XP/Vista/7/8/10
Compiling...
xHarbour 1.2.3 Intl. (SimpLex) (Build 20221118)
Copyright 1999-2022, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'drxlsx.prg' and generating preprocessed output to 'drxlsx.ppo'...
Generating C source output to 'drxlsx.c'...
Done.
Lines 19, Functions/Procedures 1, pCodes 52
Embarcadero C++ 7.40 for Win32 Copyright (c) 1993-2018 Embarcadero Technologies, Inc.
drxlsx.c:
Turbo Incremental Link 6.90 Copyright (c) 1997-2017 Embarcadero Technologies, Inc.
Error: Unresolved external '_fill_fopen64_filefunc' referenced from D:\TOOLS\DRXLSX\DRXLSX32X_BCC.LIB|zip
Error: Unresolved external '_call_zopen64' referenced from D:\TOOLS\DRXLSX\DRXLSX32X_BCC.LIB|zip
Error: Unresolved external '_fill_zlib_filefunc64_32_def_from_filefunc32' referenced from D:\TOOLS\DRXLSX\DRXLSX32X_BCC.LIB|zip
Error: Unresolved external '_call_zseek64' referenced from D:\TOOLS\DRXLSX\DRXLSX32X_BCC.LIB|zip
Error: Unresolved external '_call_ztell64' referenced from D:\TOOLS\DRXLSX\DRXLSX32X_BCC.LIB|zip
Error: Unresolved external '_fill_fopen_filefunc' referenced from D:\TOOLS\DRXLSX\DRXLSX32X_BCC.LIB|packager
Error: Unresolved external '_HB_FUN_HASTIMEPART' referenced from D:\TOOLS\DRXLSX\DRXLSX32X_BCC.LIB|TDrXlsx
Error: Unresolved external '_HB_FUN_HB_HEVAL' referenced from D:\TOOLS\DRXLSX\DRXLSX32X_BCC.LIB|TDrXlsx
Error: Unresolved external '_HB_FUN_HB_TTOS' referenced from D:\TOOLS\DRXLSX\DRXLSX32X_BCC.LIB|TDrXlsx
 

Re: Announcing DrXlsx 1.0 by Charles Kwon

PostPosted: Fri Oct 13, 2023 6:41 am
by Antonio Linares
Tienes que enlazar las librerias hbzip and zlib

Re: Announcing DrXlsx 1.0 by Charles Kwon

PostPosted: Fri Oct 13, 2023 9:03 am
by nageswaragunupudi
for these errors:
Code: Select all  Expand view
Error: Unresolved external '_HB_FUN_HASTIMEPART' referenced from D:\TOOLS\DRXLSX\DRXLSX32X_BCC.LIB|TDrXlsx
Error: Unresolved external '_HB_FUN_HB_HEVAL' referenced from D:\TOOLS\DRXLSX\DRXLSX32X_BCC.LIB|TDrXlsx
Error: Unresolved external '_HB_FUN_HB_TTOS' referenced from D:\TOOLS\DRXLSX\DRXLSX32X_BCC.LIB|TDrXlsx
 


Add this code somewhere in your application program:
Code: Select all  Expand view
#ifdef __XHARBOUR__

function HB_HEVAL (h); return HEVAL(h)
function HB_TTOS(t);return TTOS(t)

function HasTimePart( tDate )

   static lBug

   if lBug == nil
      lBug  := HB_IsDateTime( Date() )
   endif

   if lBug
      return ( tDate - Int( tDate ) ) > 0
   endif

return HB_IsDateTime( tDate )
#endif
 

Re: Announcing DrXlsx 1.0 by Charles Kwon

PostPosted: Fri Oct 13, 2023 12:10 pm
by Eroni
Thanks Mr Antonio e Mr Nages.

nageswaragunupudi wrote:for these errors:
Code: Select all  Expand view
Error: Unresolved external '_HB_FUN_HASTIMEPART' referenced from D:\TOOLS\DRXLSX\DRXLSX32X_BCC.LIB|TDrXlsx
Error: Unresolved external '_HB_FUN_HB_HEVAL' referenced from D:\TOOLS\DRXLSX\DRXLSX32X_BCC.LIB|TDrXlsx
Error: Unresolved external '_HB_FUN_HB_TTOS' referenced from D:\TOOLS\DRXLSX\DRXLSX32X_BCC.LIB|TDrXlsx
 


Add this code somewhere in your application program:
Code: Select all  Expand view
#ifdef __XHARBOUR__

function HB_HEVAL (h); return HEVAL(h)
function HB_TTOS(t);return TTOS(t)

function HasTimePart( tDate )

   static lBug

   if lBug == nil
      lBug  := HB_IsDateTime( Date() )
   endif

   if lBug
      return ( tDate - Int( tDate ) ) > 0
   endif

return HB_IsDateTime( tDate )
#endif
 


It works, thank you.

Mr Antonio, these libs already contains in the script, I am using buildx.bat from the samples folder.
Code: Select all  Expand view

echo %hdirl%\zlib.lib + >> b32.bc
echo %hdirl%\hbzip.lib + >> b32.bc
 

Now, show this errors:
Code: Select all  Expand view

Error: Unresolved external '_fill_fopen64_filefunc' referenced from D:\TOOLS\DRXLSX\DRXLSX32X_BCC.LIB|zip
Error: Unresolved external '_call_zopen64' referenced from D:\TOOLS\DRXLSX\DRXLSX32X_BCC.LIB|zip
Error: Unresolved external '_fill_zlib_filefunc64_32_def_from_filefunc32' referenced from D:\TOOLS\DRXLSX\DRXLSX32X_BCC.LIB|zip
Error: Unresolved external '_call_zseek64' referenced from D:\TOOLS\DRXLSX\DRXLSX32X_BCC.LIB|zip
Error: Unresolved external '_call_ztell64' referenced from D:\TOOLS\DRXLSX\DRXLSX32X_BCC.LIB|zip
Error: Unresolved external '_fill_fopen_filefunc' referenced from D:\TOOLS\DRXLSX\DRXLSX32X_BCC.LIB|packager
 

Re: Announcing DrXlsx 1.0 by Charles Kwon

PostPosted: Fri Oct 13, 2023 3:02 pm
by nageswaragunupudi
please try adding this lib also to your link-script
\xharbour\lib\hbmzip.lib

Re: Announcing DrXlsx 1.0 by Charles Kwon

PostPosted: Fri Oct 13, 2023 9:56 pm
by Eroni
nageswaragunupudi wrote:please try adding this lib also to your link-script
\xharbour\lib\hbmzip.lib


It works fine now!
Thank you Mr. Nages

Re: Announcing DrXlsx 1.0 by Charles Kwon

PostPosted: Sat Oct 14, 2023 4:34 pm
by leandro
Hola buenos días para todos

Estamos terminando de implementar la clase del maestro Charles en algunos de nuestros informes, ya logramos crear los archivos de Excel, ahora requerimos poder cambiar los colores de las fuentes y el color de fondo de la celda, estuvimos revisando en la documentación que publico el maestro Charles, pero no encontramos como se debe hacer.

Tambien nos gustaría saber como podemos hacer para leer un archivo de Excel y recuperar los datos, incluyendo una imagen.

Si alguien tiene un ejemplo seria de mucha utilidad.

De antemano gracias.

Re: Announcing DrXlsx 1.0 by Charles Kwon

PostPosted: Sun Oct 15, 2023 12:56 am
by karinha
Master Nages, is this correct? If so, how do I trigger Excel to open the: testsayx.xlsx

Maestro Nages, ¿es esto correcto? Si es así, ¿cómo hago para que Excel abra: testsayx.xlsx

Code: Select all  Expand view

// C:\FWH..\SAMPLES\TESTDRXL.PRG - Master Nages,

#include "FiveWin.ch"
#include "DrXlsx.ch"

#ifdef __XHARBOUR__

   #xtranslate hb_DateTime( [<x,...>] )        => DateTime( <x> )

#endif

REQUEST DBFCDX

FUNCTION Main()

   SET DATE FORMAT "YYYY-MM-DD"

   HelloSayX()

RETURN NIL

// Mister Nages:

#ifdef __XHARBOUR__

FUNCTION HB_HEVAL(h) ; RETURN HEVAL(h)

FUNCTION HB_TTOS(t) ; RETURN TTOS(t)

FUNCTION HasTimePart( tDate )

   static lBug

   if lBug == nil
      lBug  := HB_IsDateTime( Date() )
   endif

   if lBug
      RETURN ( tDate - Int( tDate ) ) > 0
   endif

RETURN HB_IsDateTime( tDate )

#endif

FUNCTION HelloSayX()

   LOCAL oXlsx := TDrXlsx():New()
   LOCAL dDate := Date()
   LOCAL nValue := 2023
   LOCAL nValue2 := 19450815
   LOCAL nUSD    := 3000

   IF oXlsx:CreateFile( "testsayx.xlsx" ) <> 0

      ?" The file is already open."

      RETURN NIL

   ENDIF

   oXlsx:SetColumnSize( 0, 0, 20 )

   @ 0, 0 SAYX "Hello World!" OF oXlsx

   @ 1, 0 SAYX "CENTER Text" OF oXlsx ALIGN DRXLSX_ALIGN_CENTER

   @ 2, 0 SAYX "RIGHT  Text" OF oXlsx ALIGN DRXLSX_ALIGN_RIGHT

   @ 3, 0 SAYX  dDate   OF  oXlsx ALIGN DRXLSX_ALIGN_CENTER

   @ 4, 0 SAYX  nValue  OF  oXlsx PICTUREX "#,###"

   @ 5, 0 SAYX  nValue2 OF  oXlsx PICTUREX "#,###"

   @ 6, 0 SAYX  nUSD    OF  oXlsx PICTUREX "$#,###"

   oXlsx:Close()

RETURN NIL

FUNCTION Hello()

   LOCAL oXlsx := TDrXlsx():New()

   oXlsx:CreateFile( "test.xlsx" )
   oXlsx:WriteString( 0, 0, "안녕하세요" )
   oXlsx:WriteString( 1, 0, "Hello World!" )
   oXlsx:Close()

RETURN NIL

FUNCTION Hello2()

   LOCAL oXlsx := TDrXlsx():New()

   oXlsx:CreateFile( "testlogic.xlsx" )
   oXlsx:SetColumnSize( 0, 0, 12 )

   oXlsx:WriteString( 0, 0, "안녕하세요" )
   oXlsx:WriteString( 1, 0, "Hello World!" )
   oXlsx:WriteLogical( 2, 0, .T. )
   oXlsx:WriteDate( 3, 0, Date(), DRXLSX_ALIGN_CENTER, "dd-mm-yyyy" )
   oXlsx:Close()

RETURN NIL

FUNCTION Hello3()

   LOCAL oXlsx := TDrXlsx():New()

   oXlsx:CreateFile( "align.xlsx" )
   oXlsx:SetColumnSize( 0, 0, 12 )

   oXlsx:WriteString( 0, 0, "안녕하세요", DRXLSX_ALIGN_CENTER )

   oXlsx:WriteString( 1, 0, "Hello World!" )
   oXlsx:WriteLogical( 2, 0, .T. )
   oXlsx:WriteDate( 3, 0, Date(),, "dd-mm-yyyy" )

   oXlsx:Close()

RETURN NIL

FUNCTION Hello4()

   LOCAL oXlsx  := TDrXlsx():New()
   LOCAL dtTest := hb_DateTime( 2023, 8, 23, 20, 04, 30 )

   oXlsx:CreateFile( "merge.xlsx" )

   oXlsx:SetColumnSize( 0, 0, 30 )
   oXlsx:SetColumnSize( 0, 1, 30 )

   oXlsx:MergeRange( 0, 0, 0, 1, "Title", DRXLSX_ALIGN_CENTER )

   oXlsx:WriteString( 1, 0, "Product 1" )
   oXlsx:WriteDate( 1, 1, Date(), DRXLSX_ALIGN_CENTER, "yyyy-mm-dd" )

   oXlsx:WriteString( 2, 0, "Is Stock" )
   oXlsx:WriteLogical( 2, 1, .T., DRXLSX_ALIGN_CENTER )

   oXlsx:WriteString( 3, 0, "Stock Price" )
   oXlsx:WriteNumber( 3, 1, 9999,, "$#,##0.00" )

   oXlsx:WriteString( 4, 0, "Timestamp" )
   oXlsx:WriteDateTime( 4, 1, dtTest,, "yyyy-mm-dd hh:mm:dd" )

   oXlsx:Close()

RETURN NIL

FUNCTION Saytest()

   LOCAL oXlsx  := TDrXlsx():New()
   LOCAL dtTest := hb_DateTime( 2023, 8, 23, 20, 04, 30 )

   oXlsx:CreateFile( "say.xlsx" )

   oXlsx:SetColumnSize( 0, 0, 30 )
   oXlsx:SetColumnSize( 0, 1, 30 )
   oXlsx:Say( 0, 0, "Valtype" )
   oXlsx:Say( 0, 1, "Value" )

   oXlsx:Say( 1, 0, "Character" )
   oXlsx:Say( 2, 0, "Numeric" )
   oXlsx:Say( 3, 0, "Date" )
   oXlsx:Say( 4, 0, "Logic" )
   oXlsx:Say( 5, 0, "Datetime format" )
   oXlsx:Say( 6, 0, "Datetime" )

   oXlsx:Say( 1, 1, "Hello" )
   oXlsx:Say( 2, 1, 1234.0000,, "#,##0.000" )
   oXlsx:Say( 3, 1, Date() )
   oXlsx:Say( 4, 1, .T. )
   oXlsx:Say( 5, 1, dtTest,, "yyyy-mm-dd hh:mm:ss" )
   oXlsx:Say( 6, 1, dtTest )

   oXlsx:Close()

RETURN NIL

FUNCTION Hello5()

   LOCAL oXlsx  := TDrXlsx():New()
   LOCAL dtTest := hb_DateTime( 2023, 8, 23, 20, 04, 30 )
   LOCAL oFormat

   IF oXlsx:CreateFile( "merge2.xlsx" ) <> 0

      ?"The file is already open."
      RETURN NIL
   ENDIF

   /*
   oFormat := TDrXlsxFormat():New( oXlsx )

   oFormat:AddAlign( DRXLSX_ALIGN_CENTER )
   oFormat:AddAlign( DRXLSX_ALIGN_VERTICAL_CENTER )
   */


   DEFINE XLSXFORMAT oFormat OF oXlsx

   ADD XLSXALIGN DRXLSX_ALIGN_CENTER TO oFormat
   ADD XLSXALIGN DRXLSX_ALIGN_VERTICAL_CENTER TO oFormat

   oXlsx:SetColumnSize( 0, 0, 30 )
   oXlsx:SetColumnSize( 0, 1, 30 )

   oXlsx:MergeRange( 0, 0, 1, 1, "Title", oFormat )

   oXlsx:WriteString( 2, 0, "Product 1" )
   oXlsx:WriteDate( 2, 1, Date(), DRXLSX_ALIGN_CENTER, "yyyy-mm-dd" )

   oXlsx:WriteString( 3, 0, "Is Stock" )
   oXlsx:WriteLogical( 3, 1, .T., DRXLSX_ALIGN_CENTER )

   oXlsx:WriteString( 4, 0, "Stock Price" )
   oXlsx:WriteNumber( 4, 1, 9999,, "$#,##0.00" )

   oXlsx:WriteString( 5, 0, "Timestamp" )
   oXlsx:WriteDateTime( 5, 1, dtTest,, "yyyy-mm-dd hh:mm:dd" )

   oXlsx:WriteString( 6, 0, "Timestamp2" )
   oXlsx:WriteDateTime( 6, 1, dtTest )

   oXlsx:Close()

RETURN NIL

FUNCTION HelloFormula()

   LOCAL oXlsx := TDrXlsx():New()
   LOCAL dtTest := hb_DateTime()
   LOCAL oFormat

   IF oXlsx:CreateFile( "formula_format.xlsx" ) <> 0

      ?"The file is already open."

   ENDIF

   DEFINE XLSXFORMAT oFormat OF oXlsx

   ADD XLSX ALIGN          DRXLSX_ALIGN_CENTER      TO oFormat
   ADD XLSX NUMBER_FORMAT "yyyy-mm-dd hh.mm.ss.000" TO oFormat

   ADD XLSX BOLD TO oFormat
   ADD XLSX ITALIC TO oFormat

   ADD XLSX BOTTOM STYLE DRXLSX_BORDER_DOUBLE TO oFormat

   oXlsx:SetColumnSize( 0, 1, 30 )

   oXlsx:WriteString( 0, 0, "Timestamp" )
   oXlsx:WriteDateTime( 0, 1, dtTest )

   oXlsx:WriteString( 1, 0, "Timestamp + 30" )
   oXlsx:WriteFormula( 1, 1, "=B1+30",  oFormat )

   oXlsx:Close()

RETURN NIL

FUNCTION MakeDbf2Xls()

   rddSetDefault( "DBFCDX" )

   USE INVOICES NEW

   Dr_Dbf2Xlsx( "invoices.xlsx", .T. )

RETURN NIL

// FIN / END
 


Gracias, thanks.

Regards, saludos.

Re: Announcing DrXlsx 1.0 by Charles Kwon

PostPosted: Sun Oct 15, 2023 4:33 am
by nageswaragunupudi
If so, how do I trigger Excel to open the: testsayx.xlsx

Code: Select all  Expand view
ShellExectute( 0, "Open", cXlsxFile )

Re: Announcing DrXlsx 1.0 by Charles Kwon

PostPosted: Sun Oct 15, 2023 6:38 pm
by karinha
Thanks mister Rao. Perfect!

Code: Select all  Expand view

// C:\FWH..\SAMPLES\TESTDRXL.PRG - Master Nages, Moidified: 15/10/2023 Joao.

#include "FiveWin.ch"
#include "DrXlsx.ch"

#ifdef __XHARBOUR__

   #xtranslate hb_DateTime( [<x,...>] )        => DateTime( <x> )

#endif

REQUEST DBFCDX

FUNCTION Main()

   // SET DATE FORMAT "YYYY-MM-DD"
   SET CENTURY ON
   SET DATE BRITISH
   SET TIME FORMAT TO "HH:MM:SS"
   SET EPOCH TO YEAR( DATE() ) - 30
   SET SOFTSEEK OFF
   SET WRAP ON
   SETCANCEL( .F. )
   SET CONFIRM OFF
   SET DELETED ON
   SET _3DLOOK ON
   SET UNIQUE OFF
   SET ESCAPE OFF
   SET EXACT ON
   SET EXCLUSIVE OFF
   SET MULTIPLE OFF
   SET OPTIMIZE ON

   HelloSayX()

RETURN NIL

// Mister Nages:

#ifdef __XHARBOUR__

FUNCTION HB_HEVAL(h) ; RETURN HEVAL(h)

FUNCTION HB_TTOS(t) ; RETURN TTOS(t)

FUNCTION HasTimePart( tDate )

   static lBug

   if lBug == nil
      lBug  := HB_IsDateTime( Date() )
   endif

   if lBug
      RETURN ( tDate - Int( tDate ) ) > 0
   endif

RETURN HB_IsDateTime( tDate )

#endif

FUNCTION HelloSayX()

   LOCAL oXlsx     := TDrXlsx():New()
   LOCAL dDate     := Date()
   LOCAL nValue    := 2023
   LOCAL nValue2   := 19450815
   LOCAL nUSD      := 3000
   LOCAL cXlsxFile := "Testsayx.xlsx"

   IF oXlsx:CreateFile( "Testsayx.xlsx" ) <> 0

      ? " The file is already open."

      RETURN NIL

   ENDIF

   oXlsx:SetColumnSize( 0, 0, 20 )

   @ 0, 0 SAYX "Hello World!" OF oXlsx

   @ 1, 0 SAYX "CENTER Texto" OF oXlsx ALIGN DRXLSX_ALIGN_CENTER

   @ 2, 0 SAYX "RIGHT  Texto" OF oXlsx ALIGN DRXLSX_ALIGN_RIGHT

   @ 3, 0 SAYX  "Date: "      OF oXlsx ALIGN DRXLSX_ALIGN_CENTER

   @ 4, 0 SAYX  dDate         OF oXlsx ALIGN DRXLSX_ALIGN_CENTER

   @ 5, 0 SAYX  nValue        OF oXlsx PICTUREX "#,###"

   @ 6, 0 SAYX  nValue2       OF oXlsx PICTUREX "#,###"

   @ 7, 0 SAYX  "US$: "       OF oXlsx ALIGN DRXLSX_ALIGN_RIGHT

   @ 8, 0 SAYX  nUSD          OF oXlsx PICTUREX "$#,###"

   oXlsx:Close()

   // ShellExecute( 0, "Open", cXlsxFile )  // Mister Rao
   MsgRun( "AGUARDE... ABRINDO O PROGRAMA DO EXCEL...",                      ;
           "Por Favor, Espere Abertura. Pode Demorar.",                      ;
           { || WinExec( ShellExecute( 0, "Open", cXlsxFile ) ), 3 } )

RETURN NIL

FUNCTION Hello()

   LOCAL oXlsx := TDrXlsx():New()

   oXlsx:CreateFile( "test.xlsx" )
   oXlsx:WriteString( 0, 0, "안녕하세요" )
   oXlsx:WriteString( 1, 0, "Hello World!" )
   oXlsx:Close()

RETURN NIL

FUNCTION Hello2()

   LOCAL oXlsx := TDrXlsx():New()

   oXlsx:CreateFile( "testlogic.xlsx" )
   oXlsx:SetColumnSize( 0, 0, 12 )

   oXlsx:WriteString( 0, 0, "안녕하세요" )
   oXlsx:WriteString( 1, 0, "Hello World!" )
   oXlsx:WriteLogical( 2, 0, .T. )
   oXlsx:WriteDate( 3, 0, Date(), DRXLSX_ALIGN_CENTER, "dd-mm-yyyy" )
   oXlsx:Close()

RETURN NIL

FUNCTION Hello3()

   LOCAL oXlsx := TDrXlsx():New()

   oXlsx:CreateFile( "align.xlsx" )
   oXlsx:SetColumnSize( 0, 0, 12 )

   oXlsx:WriteString( 0, 0, "안녕하세요", DRXLSX_ALIGN_CENTER )

   oXlsx:WriteString( 1, 0, "Hello World!" )
   oXlsx:WriteLogical( 2, 0, .T. )
   oXlsx:WriteDate( 3, 0, Date(),, "dd-mm-yyyy" )

   oXlsx:Close()

RETURN NIL

FUNCTION Hello4()

   LOCAL oXlsx  := TDrXlsx():New()
   LOCAL dtTest := hb_DateTime( 2023, 8, 23, 20, 04, 30 )

   oXlsx:CreateFile( "merge.xlsx" )

   oXlsx:SetColumnSize( 0, 0, 30 )
   oXlsx:SetColumnSize( 0, 1, 30 )

   oXlsx:MergeRange( 0, 0, 0, 1, "Title", DRXLSX_ALIGN_CENTER )

   oXlsx:WriteString( 1, 0, "Product 1" )
   oXlsx:WriteDate( 1, 1, Date(), DRXLSX_ALIGN_CENTER, "yyyy-mm-dd" )

   oXlsx:WriteString( 2, 0, "Is Stock" )
   oXlsx:WriteLogical( 2, 1, .T., DRXLSX_ALIGN_CENTER )

   oXlsx:WriteString( 3, 0, "Stock Price" )
   oXlsx:WriteNumber( 3, 1, 9999,, "$#,##0.00" )

   oXlsx:WriteString( 4, 0, "Timestamp" )
   oXlsx:WriteDateTime( 4, 1, dtTest,, "yyyy-mm-dd hh:mm:dd" )

   oXlsx:Close()

RETURN NIL

FUNCTION Saytest()

   LOCAL oXlsx  := TDrXlsx():New()
   LOCAL dtTest := hb_DateTime( 2023, 8, 23, 20, 04, 30 )

   oXlsx:CreateFile( "say.xlsx" )

   oXlsx:SetColumnSize( 0, 0, 30 )
   oXlsx:SetColumnSize( 0, 1, 30 )
   oXlsx:Say( 0, 0, "Valtype" )
   oXlsx:Say( 0, 1, "Value" )

   oXlsx:Say( 1, 0, "Character" )
   oXlsx:Say( 2, 0, "Numeric" )
   oXlsx:Say( 3, 0, "Date" )
   oXlsx:Say( 4, 0, "Logic" )
   oXlsx:Say( 5, 0, "Datetime format" )
   oXlsx:Say( 6, 0, "Datetime" )

   oXlsx:Say( 1, 1, "Hello" )
   oXlsx:Say( 2, 1, 1234.0000,, "#,##0.000" )
   oXlsx:Say( 3, 1, Date() )
   oXlsx:Say( 4, 1, .T. )
   oXlsx:Say( 5, 1, dtTest,, "yyyy-mm-dd hh:mm:ss" )
   oXlsx:Say( 6, 1, dtTest )

   oXlsx:Close()

RETURN NIL

FUNCTION Hello5()

   LOCAL oXlsx  := TDrXlsx():New()
   LOCAL dtTest := hb_DateTime( 2023, 8, 23, 20, 04, 30 )
   LOCAL oFormat

   IF oXlsx:CreateFile( "merge2.xlsx" ) <> 0

      ?"The file is already open."
      RETURN NIL
   ENDIF

   /*
   oFormat := TDrXlsxFormat():New( oXlsx )

   oFormat:AddAlign( DRXLSX_ALIGN_CENTER )
   oFormat:AddAlign( DRXLSX_ALIGN_VERTICAL_CENTER )
   */


   DEFINE XLSXFORMAT oFormat OF oXlsx

   ADD XLSXALIGN DRXLSX_ALIGN_CENTER TO oFormat
   ADD XLSXALIGN DRXLSX_ALIGN_VERTICAL_CENTER TO oFormat

   oXlsx:SetColumnSize( 0, 0, 30 )
   oXlsx:SetColumnSize( 0, 1, 30 )

   oXlsx:MergeRange( 0, 0, 1, 1, "Title", oFormat )

   oXlsx:WriteString( 2, 0, "Product 1" )
   oXlsx:WriteDate( 2, 1, Date(), DRXLSX_ALIGN_CENTER, "yyyy-mm-dd" )

   oXlsx:WriteString( 3, 0, "Is Stock" )
   oXlsx:WriteLogical( 3, 1, .T., DRXLSX_ALIGN_CENTER )

   oXlsx:WriteString( 4, 0, "Stock Price" )
   oXlsx:WriteNumber( 4, 1, 9999,, "$#,##0.00" )

   oXlsx:WriteString( 5, 0, "Timestamp" )
   oXlsx:WriteDateTime( 5, 1, dtTest,, "yyyy-mm-dd hh:mm:dd" )

   oXlsx:WriteString( 6, 0, "Timestamp2" )
   oXlsx:WriteDateTime( 6, 1, dtTest )

   oXlsx:Close()

RETURN NIL

FUNCTION HelloFormula()

   LOCAL oXlsx := TDrXlsx():New()
   LOCAL dtTest := hb_DateTime()
   LOCAL oFormat

   IF oXlsx:CreateFile( "formula_format.xlsx" ) <> 0

      ? "The file is already open."

   ENDIF

   DEFINE XLSXFORMAT oFormat OF oXlsx

   ADD XLSX ALIGN          DRXLSX_ALIGN_CENTER      TO oFormat
   ADD XLSX NUMBER_FORMAT "yyyy-mm-dd hh.mm.ss.000" TO oFormat

   ADD XLSX BOLD TO oFormat
   ADD XLSX ITALIC TO oFormat

   ADD XLSX BOTTOM STYLE DRXLSX_BORDER_DOUBLE TO oFormat

   oXlsx:SetColumnSize( 0, 1, 30 )

   oXlsx:WriteString( 0, 0, "Timestamp" )
   oXlsx:WriteDateTime( 0, 1, dtTest )

   oXlsx:WriteString( 1, 0, "Timestamp + 30" )
   oXlsx:WriteFormula( 1, 1, "=B1+30",  oFormat )

   oXlsx:Close()

RETURN NIL

FUNCTION MakeDbf2Xls()

   rddSetDefault( "DBFCDX" )

   USE INVOICES NEW

   Dr_Dbf2Xlsx( "invoices.xlsx", .T. )

RETURN NIL

// FIN / END - Thanks Mister Rao. - kapiabafwh@gmail.com
 


Regards, saludos.

Re: Announcing DrXlsx 1.0 by Charles Kwon

PostPosted: Mon Oct 16, 2023 1:56 pm
by karinha
FONT no funciona?

Code: Select all  Expand view

FUNCTION Hello()

   LOCAL cXlsxFile := "Test.xlsx"
   LOCAL oXlsx := TDrXlsx():New()

   DEFINE FONT oFont NAME "Ms Sans Serif" SIZE 00, -28 BOLD // no funciona?

   oXlsx:CreateFile( "test.xlsx" )

   oXlsx:WriteString( 0, 0, "안녕하세요",, oFont )
   oXlsx:WriteString( 1, 0, "Hello World!",, oFont )

   oXlsx:Close()

   MsgRun( "AGUARDE... ABRINDO O PROGRAMA DO EXCEL...",                      ;
           "Por Favor, Espere Abertura. Pode Demorar.",                      ;
           { || WinExec( ShellExecute( 0, "Open", cXlsxFile ) ), 3 } )

RETURN NIL
 


Regards, saludos.

Re: Announcing DrXlsx 1.0 by Charles Kwon

PostPosted: Sun Nov 19, 2023 10:51 am
by leandro
Hola buenos días para todos

Acabamos de descargar la nueva distribución de xharbour para Borland 770 y tambien la distribución de borland 770. Al intentar compilar la aplicación, nos sale el siguiente error:

Code: Select all  Expand view

Embarcadero C++ 7.70 for Win32 Copyright (c) 1993-2023 Embarcadero Technologies, Inc.
C:\Fivedit\R32_menu.c:
xHarbour 1.3.0 Intl. (SimpLex) (Build 20231104)
Copyright 1999-2023, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'z:\prg\R32_perm.prg'...

100

200

100

100

100

100

100

200

300

400

500

60
Turbo Incremental Link 6.97 Copyright (c) 1997-2022 Embarcadero Technologies, Inc.
Error: Unresolved external '__streams' referenced from C:\DLYMA\DRXLSX\DRXLSX32X_BCC.LIB|drawing
Error: Unable to perform link
Link Error