Cuando se utiliza ODBC para acceder a Excel en lenguaje C, ¿qué parámetros se necesitan para conectar los caracteres de conexión de la fuente de datos utilizando el método SQLDriverConnect?
"CONDUCTOR MICROSOFT EXCEL (*.XLS)".
Luego, siga los pasos a continuación:
1. Agregue al archivo StdAfx.h:
#include lt; afxdb.hgt
#include lt; odbcinst.hgt;
2. Cree un archivo Excel directamente a través de ODBC e inserte datos en la tabla (nombre de archivo provisional: Demo.xls)
//Crear y escribir en un archivo Excel
void CRWExcel::WriteToExcel()
{
Base de datos CDatabase;
CString sDriver = "CONDUCTOR MICROSOFT EXCEL (*. XLS )"; // Controlador de instalación de Excel
CString sExcelFile = "c:\\demo.xls"; // Archivo de Excel a crear
CString sSql;
TRY
{
// Crea una cadena para el acceso
sSql.Format("DRIVER={s};DSN='' ''; FIRSTROWHASNAMES=1; READONLY=FALSE; CREATE_DB=\"s\"; DBQ=s",
sDriver, sExcelFile, sExcelFile);
// Crear base de datos (ambas tablas de Excel) archivos)
if( base de datos.OpenEx(sSql, CDatabase::noOdbcDialog) )
{
// Crear estructura de tabla (nombre, edad) p>
sSql = "CREAR TABLA de demostración (Nombre TEXTO, NÚMERO de edad)";
base de datos.ExecuteSQL(sSql);
// Insertar valor p><); p> sSql = "INSERTAR EN DEMO (Nombre, Edad) VALORES (''Xu Jingzhou'', 26)"
base de datos.ExecuteSQL(sSql);
sSql = " INSERT INTO demo (Nombre, Edad) VALUES (''Xu Zhihui'', 22)";
base de datos.ExecuteSQL(sSql);
sSql = "INSERT INTO demo (Nombre , Edad) VALUES (''Guo Hui'', 27)";
base de datos.ExecuteSQL(sSql);
}
// Cerrar la base de datos
base de datos.Close();
}
CATCH_ALL(e)
{
TRACE1(" El controlador de Excel no está instalado: s", sDriver);
}
END_CATCH_ALL;
}
> 3. Lea el archivo Excel directamente a través de ODBC (nombre de archivo provisional: Demo.xls)
//Lea el archivo Excel
void CRWExcel::ReadFromExcel()
{
Base de datos CDatabase
CString sSql;
CString sItem1, sItem2
CString sDriver;
CString sDsn;
CString sFile = "Demo.xls"; //El nombre del archivo de Excel a leer
//Recuperar si el controlador de Excel está instalado " Controlador de Microsoft Excel (*.xls)"
sDriver = GetExcelDriver();
if (sDriver.IsEmpty())
{
// Controlador de Excel no encontrado
AfxMessageBox("¡Controlador de Excel no instalado!"
return
}
); // Crea una cadena para el acceso
sDsn.Format("ODBC;DRIVER={s};DSN='''';DBQ=s", sDriver, sFile);
TRY
{
// Abre la base de datos (archivo Excel)
base de datos.Open(NULL, false, false, sDsn);
CRecordset recset(amp; base de datos);
// Establece la declaración de consulta para lectura.
sSql = "SELECT Nombre, Edad "
" FROM demo "
"ORDER BY Name ";
// Ejecutar instrucción de consulta
recset.Open(CRecordset:: forwardOnly, sSql, CRecordset:: readOnly );
// Obtener resultados de la consulta
while (!recset.IsEOF())
{
//Leer Excel interno valor
recset.GetFieldValue("Nombre ", sItem1);
recset.GetFieldValue("Edad", sItem2);
recset.MoveNext();
}
/
/ Cerrar la base de datos
database.Close();
}
CATCH(CDBException, e)
{
// Cuando se produce una excepción durante la operación de la base de datos...
AfxMessageBox("Error de la base de datos: " e-gt; m_strError
}
END_CATCH;
}
4. Obtener la función del controlador de Excel en ODBC
CString CRWExcel::GetExcelDriver()
{
char szBuf[2001];
WORD cbBufMax = 2000;
WORD cbBufOut
char *pszBuf = szBuf
CString sDriver;
// Obtiene el nombre del controlador instalado (la función está en odbcinst.h)
if (!SQLGetInstalledDrivers(szBuf, cbBufMax, amp; cbBufOut ))
return "";
// Recuperar si el controlador instalado tiene Excel...
hacer
{ p>
if (strstr(pszBuf, "Excel") != 0)
{
//¡Encontrado!
sDriver = CString(pszBuf
ruptura
}
pszBuf = strchr(pszBuf, ''\0'')
}<; /p >
while (pszBuf[1] != ''\0'');
return sDriver;
}
Presta atención a agregando archivos de encabezado! También es necesario configurar la fuente de datos. Porque ya sea de acceso u otras bases de datos como SQL, instalan y configuran la fuente de datos para la máquina del servidor durante el proceso de instalación. Si quieres utilizar la función, ¡debes pensarlo un poco!