¿ Se puede saber el rango de un archivo Excel ?

¿ Se puede saber el rango de un archivo Excel ?

Postby wyerco613 » Mon Jul 29, 2019 10:16 am

Estimados Compañeros

Quizás esta pregunta sea un poco extraña, pero no se pierde nada con preguntar: ¿ Se puede conocer el rango de un archivo excel de 5 columnas 2 de caracteres y 3 numéricas (siempre son las mismas) ? Siempre de solo una página ( hoja o sheet ) lo importante es la cantidad de registros que tenga sin abrirla.

¿Se entiende?

Desde ya muchas Gracias

Waldemar
"Porque Jehová da la sabiduría , Y de su boca viene el conocimiento y la inteligencia Proverbios 2:6"

FWH 1903 + Bcc7 + PellesC + XEdit easycomp613@gmail.com

Waldemar
Colbún Chile
User avatar
wyerco613
 
Posts: 79
Joined: Wed Mar 06, 2019 8:28 pm

Re: ¿ Se puede saber el rango de un archivo Excel ?

Postby armando.lagunas » Mon Jul 29, 2019 3:30 pm

Waldemar, la verdad creo entender de deseas leer un archivo excel con un rango especifico y llevarla a tu sistema, encontré alguna vez esto en el foro y ojala te sirva o te oriente en lo que deseas.

Code: Select all  Expand view

include "fivewin.ch"
#include "xbrowse.ch"

function Main()

   local oWnd, oBrw, oBar, oFont
   local oRange,  u

   SET DATE ITALIAN
   SET CENTURY ON

   fwNumFormat( 'E', .t. )

   msgRun( "Reading from Excel File",  "PLEASE WAIT", { || ;
   oRange   := GetExcelRange( ExePath() + "xbrtest.xls", "Customers", "A1:E12" ) ;
   } )

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-12
   DEFINE WINDOW oWnd TITLE "XBrowse Excel Sheet: FWH 11.07"
   oWnd:SetFont( oFont )
   DEFINE BUTTONBAR oBar OF oWnd 2007
   SET MESSAGE OF oWnd TO '' 2007

   @ 0,0 XBROWSE oBrw OF oWnd AUTOCOLS ;
      PICTURES nil, nil, nil, 'dd-mmm-yyyy', NumPict( 12,2 ) ;
      DATASOURCE oRange CELL LINES FOOTERS

   oBrw:Sales:bFooter   := { || oRange:Application:WorkSheetFunction:Sum(oRange:Columns(5)) }
   oBrw:nStretchCol     := 1
   oBrw:CreateFromCode()
   oWnd:oClient   := oBrw

   ACTIVATE WINDOW oWnd
   RELEASE FONT oFont
   oRange:WorkSheet:Parent:Close()

return nil

function ExePath()
return cFilePath( GetModuleFileName() )
 



saludos
SkyPe: armando.lagunas@hotmail.com
Mail: armando.lagunas@gmail.com
User avatar
armando.lagunas
 
Posts: 346
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile

Re: ¿ Se puede saber el rango de un archivo Excel ?

Postby csincuir » Mon Jul 29, 2019 3:53 pm

Waldemar,
Si ya tienes tu objeto de Excel, puedes usar estar instrucciones de Excel:

nFils := oXls:oSheet:UsedRange:Rows:Count() //<--- No de Filas o registros
nCols := oXls:oSheet:UsedRange:Columns:Count() //<--- No de Columas

Yo lo utilizo, usando la clase TExcelScrip()
Code: Select all  Expand view

   cFile := "C:\doctos\excel\doctoexcel.xls"
   oXls := TExcelScript():New()
   oXls:Add( cFile )
   nFils := oXls:oSheet:UsedRange:Rows:Count()   //<--- No de Filas o registros
   nCols := oXls:oSheet:UsedRange:Columns:Count()  //<--- No de Columas
 


Saludos.

Carlos.
csincuir
 
Posts: 396
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala

Re: ¿ Se puede saber el rango de un archivo Excel ?

Postby wyerco613 » Tue Jul 30, 2019 10:46 am

armando.lagunas wrote:Waldemar, la verdad creo entender de deseas leer un archivo excel con un rango especifico y llevarla a tu sistema, encontré alguna vez esto en el foro y ojala te sirva o te oriente en lo que deseas.

Code: Select all  Expand view

include "fivewin.ch"
#include "xbrowse.ch"

function Main()

   local oWnd, oBrw, oBar, oFont
   local oRange,  u

   SET DATE ITALIAN
   SET CENTURY ON

   fwNumFormat( 'E', .t. )

   msgRun( "Reading from Excel File",  "PLEASE WAIT", { || ;
   oRange   := GetExcelRange( ExePath() + "xbrtest.xls", "Customers", "A1:E12" ) ;
   } )

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-12
   DEFINE WINDOW oWnd TITLE "XBrowse Excel Sheet: FWH 11.07"
   oWnd:SetFont( oFont )
   DEFINE BUTTONBAR oBar OF oWnd 2007
   SET MESSAGE OF oWnd TO '' 2007

   @ 0,0 XBROWSE oBrw OF oWnd AUTOCOLS ;
      PICTURES nil, nil, nil, 'dd-mmm-yyyy', NumPict( 12,2 ) ;
      DATASOURCE oRange CELL LINES FOOTERS

   oBrw:Sales:bFooter   := { || oRange:Application:WorkSheetFunction:Sum(oRange:Columns(5)) }
   oBrw:nStretchCol     := 1
   oBrw:CreateFromCode()
   oWnd:oClient   := oBrw

   ACTIVATE WINDOW oWnd
   RELEASE FONT oFont
   oRange:WorkSheet:Parent:Close()

return nil

function ExePath()
return cFilePath( GetModuleFileName() )
 



saludos


Estimado Armando justamente este es el parámetro ("A1:E12") que necesito, sin abrir el archivo Excel. ¿Abra un a forma?

Atentamente,

Waldemar
"Porque Jehová da la sabiduría , Y de su boca viene el conocimiento y la inteligencia Proverbios 2:6"

FWH 1903 + Bcc7 + PellesC + XEdit easycomp613@gmail.com

Waldemar
Colbún Chile
User avatar
wyerco613
 
Posts: 79
Joined: Wed Mar 06, 2019 8:28 pm

Re: ¿ Se puede saber el rango de un archivo Excel ?

Postby wyerco613 » Tue Jul 30, 2019 10:48 am

csincuir wrote:Waldemar,
Si ya tienes tu objeto de Excel, puedes usar estar instrucciones de Excel:

nFils := oXls:oSheet:UsedRange:Rows:Count() //<--- No de Filas o registros
nCols := oXls:oSheet:UsedRange:Columns:Count() //<--- No de Columas

Yo lo utilizo, usando la clase TExcelScrip()
Code: Select all  Expand view

   cFile := "C:\doctos\excel\doctoexcel.xls"
   oXls := TExcelScript():New()
   oXls:Add( cFile )
   nFils := oXls:oSheet:UsedRange:Rows:Count()   //<--- No de Filas o registros
   nCols := oXls:oSheet:UsedRange:Columns:Count()  //<--- No de Columas
 



Saludos.

Carlos.


Estimado Carlos parece que es esto lo que necesito, voy a probar.

Muchas gracias

Saludos

Waldemar

P.D. Una cosa más ¿Cómo cierro el Objeto una vez obtenida la información?
"Porque Jehová da la sabiduría , Y de su boca viene el conocimiento y la inteligencia Proverbios 2:6"

FWH 1903 + Bcc7 + PellesC + XEdit easycomp613@gmail.com

Waldemar
Colbún Chile
User avatar
wyerco613
 
Posts: 79
Joined: Wed Mar 06, 2019 8:28 pm

Re: ¿ Se puede saber el rango de un archivo Excel ?

Postby cmsoft » Tue Jul 30, 2019 11:06 am

Code: Select all  Expand view
FUNCTION LeerExcel(cFile)
oExcel:=TOleAuto():New("Excel.Application")
oBook := oExcel:Workbooks:Open(cFile)
oBook:Sheets(1):Select() // Aca si tuviese mas de una hoja podrias elegir cual
oHoja := oExcel:ActiveSheet()
nTotRowCount:= oHoja:UsedRange:Rows:Count()
mregis := nTotRowCount
FOR Q=2 TO nTotRowCount // Arranco desde la segunda fila porque la primera son titulos
    AADD(vColumna1,oHoja:Cells( Q, 1 ):Value)
    AADD(vColumna2,oHoja:Cells( Q, 2 ):Value)
    AADD(vColumna3,oHoja:Cells( Q, 3 ):Value)    
NEXT    
oExcel:WorkBooks:Close()
oExcel:Application:Quit()
oExcel:Quit()

RELEASE oHoja
RELEASE oExcel
RETURN Nil
User avatar
cmsoft
 
Posts: 1191
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: ¿ Se puede saber el rango de un archivo Excel ?

Postby wyerco613 » Tue Jul 30, 2019 2:58 pm

cmsoft wrote:
Code: Select all  Expand view
FUNCTION LeerExcel(cFile)
oExcel:=TOleAuto():New("Excel.Application")
oBook := oExcel:Workbooks:Open(cFile)
oBook:Sheets(1):Select() // Aca si tuviese mas de una hoja podrias elegir cual
oHoja := oExcel:ActiveSheet()
nTotRowCount:= oHoja:UsedRange:Rows:Count()
mregis := nTotRowCount
FOR Q=2 TO nTotRowCount // Arranco desde la segunda fila porque la primera son titulos
    AADD(vColumna1,oHoja:Cells( Q, 1 ):Value)
    AADD(vColumna2,oHoja:Cells( Q, 2 ):Value)
    AADD(vColumna3,oHoja:Cells( Q, 3 ):Value)    
NEXT    
oExcel:WorkBooks:Close()
oExcel:Application:Quit()
oExcel:Quit()

RELEASE oHoja
RELEASE oExcel
RETURN Nil


Estimado Cesar

lo he probado muchas veces pero me da un error que no encuentra el archivo excel

que estaré haciendo mal

Waldemar
"Porque Jehová da la sabiduría , Y de su boca viene el conocimiento y la inteligencia Proverbios 2:6"

FWH 1903 + Bcc7 + PellesC + XEdit easycomp613@gmail.com

Waldemar
Colbún Chile
User avatar
wyerco613
 
Posts: 79
Joined: Wed Mar 06, 2019 8:28 pm

Re: ¿ Se puede saber el rango de un archivo Excel ?

Postby cmsoft » Wed Jul 31, 2019 11:02 am

Waldemar:
Le estas pasando el nombre y path completo del archivo Excel?
Yo lo tengo funcionando en un programa tal cual te lo pase, levanto el archivo asi:
Code: Select all  Expand view

cFile := SPACE(50)
DEFINE DIALOG oDlg TITLE "Importar " FROM 05,18 TO 16,62
   @ 07, 05 SAY "Archivo a Importar" OF oDlg PIXEL
   @ 05, 70 GET oGet VAR cFile ;
   ACTION (oGet:cText := cGetFile( "Archivos Excel (*.xls)|*.xls|Todos los Archivos (*.*)|*.*", "Seleccione archivo a importar",, ".\", .f. ));
   OF oDlg PICTURE "
@S20" PIXEL SIZE 70,12 BITMAP "BUSC1"
   @ 20,05 BUTTON oBot1 PROMPT "
&Importar" OF oDlg SIZE 30,10 ;
           ACTION ((ok := .t.), oDlg:End() ) PIXEL WHEN(!EMPTY(oGet:cText)) UPDATE
   @ 20,90 BUTTON oBot2 PROMPT "
&Cancelar" OF oDlg SIZE 30,10 ;
           ACTION ((ok := .f.), oDlg:End() ) PIXEL
   ACTIVATE DIALOG oDlg CENTER
IF !ok
   RETURN
ENDIF
User avatar
cmsoft
 
Posts: 1191
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: ¿ Se puede saber el rango de un archivo Excel ?

Postby wyerco613 » Fri Aug 02, 2019 11:08 am

cmsoft wrote:Waldemar:
Le estas pasando el nombre y path completo del archivo Excel?
Yo lo tengo funcionando en un programa tal cual te lo pase, levanto el archivo asi:
Code: Select all  Expand view

cFile := SPACE(50)
DEFINE DIALOG oDlg TITLE "Importar " FROM 05,18 TO 16,62
   @ 07, 05 SAY "Archivo a Importar" OF oDlg PIXEL
   @ 05, 70 GET oGet VAR cFile ;
   ACTION (oGet:cText := cGetFile( "Archivos Excel (*.xls)|*.xls|Todos los Archivos (*.*)|*.*", "Seleccione archivo a importar",, ".\", .f. ));
   OF oDlg PICTURE "
@S20" PIXEL SIZE 70,12 BITMAP "BUSC1"
   @ 20,05 BUTTON oBot1 PROMPT "
&Importar" OF oDlg SIZE 30,10 ;
           ACTION ((ok := .t.), oDlg:End() ) PIXEL WHEN(!EMPTY(oGet:cText)) UPDATE
   @ 20,90 BUTTON oBot2 PROMPT "
&Cancelar" OF oDlg SIZE 30,10 ;
           ACTION ((ok := .f.), oDlg:End() ) PIXEL
   ACTIVATE DIALOG oDlg CENTER
IF !ok
   RETURN
ENDIF


Muchas gracias Cesar

El problema es que tengo que pasar todo el PATH sino no encuentra el archivo xlsx

Lo hice así y funciono

Muy agradecido

Bendiciones

Waldemar
"Porque Jehová da la sabiduría , Y de su boca viene el conocimiento y la inteligencia Proverbios 2:6"

FWH 1903 + Bcc7 + PellesC + XEdit easycomp613@gmail.com

Waldemar
Colbún Chile
User avatar
wyerco613
 
Posts: 79
Joined: Wed Mar 06, 2019 8:28 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 9 guests