Funciones que permiten construir lectores de ficheros Excel Xls, esto es, del Excel clásico de Office de Microsoft. Estos ficheros Excel tienen la extension xls.
Las funciones de esta página están ordenadas de forma alfabética por las diferentes gramáticas del lenguaje Tol (
Text, Set, Serie, Anything, Code, Date, Real,...) y,
dentro de cada gramática, por el nombre de la función.
Pueden encontrarse 2 o más funciones con idéntico nombre,
pero con distintas maneras de programarse o con diferentes comentarios en diferentes idiomas,
estas funciones aparecerán unas a continuación de las otras.
//////////////////////////////////////////////////////////////////////////////
Real XlsCopy(Text filInp, // Input file path
Text filOut) // Output file path
//////////////////////////////////////////////////////////////////////////////
{
Text dos(Text pth) { Char(34)+Replace(pth, "/", "\\")+Char(34) };
If(!FileExist (filInp), FALSE, // Si el origen no existe no se copia
If(!XlsIsExcelXls(filInp), FALSE, // Si no es Excel Xls no se copia
System("copy " + dos(filInp) + " " + dos(filOut))))
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna cierto si pueda copiar el fichero filInp sobre filOut.
No se copia si el origen no existe o no es un Excel Xls.",
XlsCopy);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Real XlsIsExcelXls(Text inpPth) // Input path, the Xls Excel file path
//////////////////////////////////////////////////////////////////////////////
{
If(!TextEndAt(ToLower(inpPth), ".xls"), FALSE, // Comprobar extension
{
Text ini2Ch = Sub(ReadFile(inpPth),1,2);
ini2Ch == Xls2By // Comprobar el inicio
})
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna cierto si inpPth tiene la extension de un fichero Excel Xls y
sus 2 primeros bytes coinciden con los de un fichero Excel Xls.",
XlsIsExcelXls);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Set XlsReadSheet(Text xlsPth, // Direccion del fichero Excel
Text shtNam, // Nombre de la hoja a leer (sin $)
Text iniPos, // Posicion inicial tipo A1 o A
Text endPos) // Posicion final tipo Z9 o Z
//////////////////////////////////////////////////////////////////////////////
{ XlsReadSheetOdbc(xlsPth, shtNam, iniPos, endPos, XlsOdb, XlsBuf) };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna una tabla, como conjunto de filas de conjunto de celdas, resultado
de leer del fichero Excel Xls de ruta xlsPth, la hoja shtNam,
desde la posicion iniPos a la posicion endPos.
Esta lectura Odbc mediante Sql asume que la primera fila del fichero Excel
son los nombres de los campos.
Las posiciones iniciales y finales pueden ser del tipo:
- A y K: lee de la columna A a la columna K todas las filas hasta el final o
- B4 y Z9: lee el rectangulo de celdas derminado por esas 2 esquinas.
Esta funcion asume la conexion Odbc (XlsOdb) y la ruta al fichero buffer Excel
por defecto (XlsBuf).",
XlsReadSheet);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Set XlsReadSheetOdbc(Text xlsPth, // Direccion del fichero Excel
Text shtNam, // Nombre de la hoja a leer (sin $)
Text iniPos, // Posicion inicial tipo A1 o A
Text endPos, // Posicion final tipo Z9 o Z
Text xlsOdb, // Nombre de la conexion Odbc
Text xlsBuf) // Rura del buffer Odbc
//////////////////////////////////////////////////////////////////////////////
{
If(!XlsCopy(xlsPth, xlsBuf), Empty, // No se puede copiar
{
Real xlsOpn = DBOpen(xlsOdb, "", ""); // Sin usuario ni password
Text xlsSql = "select * from ["+shtNam+"$"+iniPos+":"+endPos+"];";
Set xlsTab = DBTable(xlsSql);
Real DBClose(xlsOdb);
xlsTab
})
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna una tabla, como conjunto de filas de conjunto de celdas, resultado
de leer del fichero Excel Xls de ruta xlsPth, la hoja shtNam,
desde la posicion iniPos a la posicion endPos.
Esta lectura Odbc mediante Sql asume que la primera fila del fichero Excel
son los nombres de los campos.
Las posiciones iniciales y finales pueden ser del tipo:
- A y K: lee de la columna A a la columna K todas las filas hasta el final o
- B4 y Z9: lee el rectangulo de celdas derminado por esas 2 esquinas.
Esta funcion recibe como parametros la conexion Odbc xlsObc y la ruta al
fichero buffer Excel en el parametro xlsBuf.
Retorna el conjunto vacio en caso de error.",
XlsReadSheetOdbc);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Set XlsSetCtr(Text newBuf, // Camino del fichero Excel buffer por defecto
Text newOdb) // Identificador Odbc por defecto
//////////////////////////////////////////////////////////////////////////////
{
Set oldVal = SetOfSet(Copy(XlsBuf), Copy(XlsOdb)); // Valores actuales
Text(XlsBuf:=Copy(newBuf)); // Memoriza el nuevo buffer
Text(XlsOdb:=Copy(newOdb)); // Memoriza la nueva conexion Odbc
oldVal // Retorna los antiguos valores
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Memoriza el camino al fichero buffer Excel por defecto y a la conexion Odbc
que se emplearan a partir de la llamada a esta funcion, esto es, actualiza
los parametros de control.
Retorna los valores anteriores por si se desean restaurar posteriormente.",
XlsSetCtr);
//////////////////////////////////////////////////////////////////////////////
2015 asolver.com | Aviso legal | XHTML | Δ Θ Ξ | Creative Commons | Mapa y funciones del sitio