Leer los nombres de worksheets usando ODBC

30/05/2005 - 16:07 por weboweb | Informe spam
Hola!

Es la primera vez que mando un mensaje a este grupo.
Estoy tratando de leer informacion de archivos excel usando ODBC.
Puedo leer sin problemas en el caso que sepa de antemano el nombre del
"worksheet" (no se como se dice en español). Pero si un archivo tiene
uno o mas worksheets y no se los nombres de antemano, necesito una
forma de obtener la lista de estos nombres.

He intentado usando el siguiente codigo en C que es parte de una
aplicacion MFC mas grande, pero el problema que tengo es que me
devuelve el SQL_NO_DATA ( o sea que no puede leer los nombres de
worksheets). Si alguien tiene alguna idea por favor avisarme.

Por favor noten que no quiero usar Excel ni Excel automation, este
programa sera instalado en computadoras que no tienen Excel.

Gracias!

webOweb

SQLHENV henv = NULL;
SQLHDBC hdbc = NULL;
SQLHSTMT hstmt = NULL;
char dsn[] = "Driver={Microsoft Excel Driver
(*.xls)};Dbq=C:\estemp\\Book­­1.xls";
SQLTCHAR outdsn[1024];
SQLSMALLINT outdsnlen;
SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3,
SQL_IS_INTEGER);
SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
int rc = SQLDriverConnect(hdbc, NULL, (SQLTCHAR*)dsn,
strlen(dsn),outdsn, sizeof(outdsn), &outdsnlen, SQL_DRIVER_NOPROMPT);
if(rc==SQL_SUCCESS)
{
printf("OUT: %s",outdsn);
SQLAllocHandle(SQL_HANDLE_STMT­­, hdbc,&hstmt);
//rc = SQLTables(hstmt,0,0,0,0,0,0,(S­­QLCHAR*)"SYSTEM
TABLE",SQL_NTS);
rc SQLTables(hstmt,0,0,0,0,0,0,(S­­QLCHAR*)"TABLE",SQL_NTS);
if(rc==SQL_SUCCESS)
{
printf("SQLTables OK");
while(SQLFetch(hstmt)==0) //SQL_NO_DATA retorna esto
{
printf("sheet found",rc);
}
}
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);



}


SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv
 

Preguntas similares