使用 ODBC 创建 Excel 工作表






4.69/5 (23投票s)
2000年1月13日

349008
仅使用 ODBC 写入 Excel 电子表格
问题
许多应用程序都提供导出功能。那么,将结果轻松保存为 Excel 表格不是很好吗?
ODBC 使这成为可能,但有一个小缺点:以通常的方式使用 ODBC,需要在 ODBC 管理器中注册一个数据源 (DSN)。
这不太实用,因为您需要在应该支持您的导出功能的每台机器上本地安装该 DSN。
解决方案
在 CDatabase::OpenEx()
的连接字符串中省略 DSN 标签,使我们能够直接使用其名称引用 ODBC 驱动程序,因此我们不必注册 DSN。当然,这表示 ODBC 驱动程序的名称必须完全已知。
如果您只想测试某个驱动程序是否存在(例如,在 CFileOpenDlg
中显示支持的扩展名),只需尝试 CDatabase::OpenEx()
即可。如果未安装,则会抛出异常。
要创建和写入该 Excel 表格,只需使用如下代码示例所示的 SQL 即可。
所需内容
为了使下面的代码运行,您需要
- 拥有
包含 - 安装了名为“MICROSOFT EXCEL DRIVER (*.XLS)”的 ODBC 驱动程序
源代码
// this example creates the Excel file C:\DEMO.XLS, puts in a worksheet with two // columns (one text the other numeric) an appends three no-sense records. // void MyDemo::Put2Excel() { CDatabase database; CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // exactly the same name as in the ODBC-Manager CString sExcelFile = "c:\\demo.xls"; // Filename and path for the file to be created CString sSql; TRY { // Build the creation string for access without DSN sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s", sDriver, sExcelFile, sExcelFile); // Create the database (i.e. Excel sheet) if( database.OpenEx(sSql,CDatabase::noOdbcDialog) ) { // Create table structure sSql = "CREATE TABLE demo (Name TEXT,Age NUMBER)"; database.ExecuteSQL(sSql); // Insert data sSql = "INSERT INTO demo (Name,Age) VALUES ('Bruno Brutalinsky',45)"; database.ExecuteSQL(sSql); sSql = "INSERT INTO demo (Name,Age) VALUES ('Fritz Pappenheimer',30)"; database.ExecuteSQL(sSql); sSql = "INSERT INTO demo (Name,Age) VALUES ('Hella Wahnsinn',28)"; database.ExecuteSQL(sSql); } // Close database database.Close(); } CATCH_ALL(e) { TRACE1("Driver not installed: %s",sDriver); } END_CATCH_ALL; }