¿ Se puede saber el rango de un archivo Excel ?

Post Reply
User avatar
wyerco613
Posts: 73
Joined: Wed Mar 06, 2019 8:28 pm

¿ Se puede saber el rango de un archivo Excel ?

Post by wyerco613 »

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

Waldemar
Colbún Chile
User avatar
armando.lagunas
Posts: 340
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile
Contact:

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

Post by armando.lagunas »

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

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
csincuir
Posts: 305
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala
Contact:

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

Post by csincuir »

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

   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.
User avatar
wyerco613
Posts: 73
Joined: Wed Mar 06, 2019 8:28 pm

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

Post by wyerco613 »

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

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

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

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

Post by wyerco613 »

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

   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

Waldemar
Colbún Chile
User avatar
cmsoft
Posts: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

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

Post by cmsoft »

Code: Select all

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
wyerco613
Posts: 73
Joined: Wed Mar 06, 2019 8:28 pm

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

Post by wyerco613 »

cmsoft wrote:

Code: Select all

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

Waldemar
Colbún Chile
User avatar
cmsoft
Posts: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

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

Post by cmsoft »

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

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
wyerco613
Posts: 73
Joined: Wed Mar 06, 2019 8:28 pm

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

Post by wyerco613 »

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

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

Waldemar
Colbún Chile
Post Reply