¿ Se puede saber el rango de un archivo Excel ?
¿ Se puede saber el rango de un archivo Excel ?
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
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
FWH 1903 + Bcc7 + PellesC + XEdit
Waldemar
Colbún Chile
- 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 ?
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.
saludos
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
Re: ¿ Se puede saber el rango de un archivo Excel ?
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()
Saludos.
Carlos.
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
Carlos.
Re: ¿ Se puede saber el rango de un archivo Excel ?
Estimado Armando justamente este es el parámetro ("A1:E12") que necesito, sin abrir el archivo Excel. ¿Abra un a forma?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
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
FWH 1903 + Bcc7 + PellesC + XEdit
Waldemar
Colbún Chile
Re: ¿ Se puede saber el rango de un archivo Excel ?
Estimado Carlos parece que es esto lo que necesito, voy a probar.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.
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
FWH 1903 + Bcc7 + PellesC + XEdit
Waldemar
Colbún Chile
Re: ¿ Se puede saber el rango de un archivo Excel ?
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
Re: ¿ Se puede saber el rango de un archivo Excel ?
Estimado Cesarcmsoft 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
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
FWH 1903 + Bcc7 + PellesC + XEdit
Waldemar
Colbún Chile
Re: ¿ Se puede saber el rango de un archivo Excel ?
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:
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
Re: ¿ Se puede saber el rango de un archivo Excel ?
Muchas gracias Cesarcmsoft 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
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
FWH 1903 + Bcc7 + PellesC + XEdit
Waldemar
Colbún Chile