首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个关于EXCEL读写的有关问题,请高手帮忙

2012-02-19 
一个关于EXCEL读写的问题,请高手帮忙!我在网上找的代码,是写数据到EXCEL文件,用VC6.0编译运行没有问题C/C+

一个关于EXCEL读写的问题,请高手帮忙!
我在网上找的代码,是写数据到EXCEL文件,用VC6.0编译运行没有问题

C/C++ code
#include <afxdb.h> // 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 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;} void main(){     Put2Excel();}


但是要是我把上面的代码改成带2个变量的,就只能创建EXCEL文件和数据结构,但是数据却不能写人EXCEL文件,请高手帮忙看看是哪里有错误,谢谢!
C/C++ code
#include <afxdb.h>  // 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 Put2Excel(LPSTR name, int age){  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 ("+(CString)name+","+(CString)age+")";      database.ExecuteSQL(sSql);    }     // Close database    database.Close();  }  CATCH_ALL(e)  {    TRACE1("Driver not installed: %s",sDriver);  }  END_CATCH_ALL;} void main(){     Put2Excel("Bruno",45);}


[解决办法]
char a[10];
itoa(age,a,10);
// sSql = "INSERT INTO demo (Name,Age) VALUES ("+(CString)name+","+(CString)age+")";
// 错了,int型转出来乱的
sSql = "INSERT INTO demo (Name,Age) VALUES ("+(CString)name+","+a+")";
[解决办法]
这张表已经create了,你反复create当然不行了
再写一个函数叫insert2execl与void Put2Excel(LPSTR name, int age)基本一致
但是下面这段话去掉
// Create table structure
sSql = "CREATE TABLE demo (Name TEXT,Age NUMBER)";
database.ExecuteSQL(sSql);
第一次调用Put2Excel,第二次以后都用insert2execl


热点排行
Bad Request.