VC++读写打开Excel文档(代码备份)
一:写Excel文档。
// 获取程序所在目录 GetCurrentDirectory(MAX_PATH,g_csPathBuff); //创建并写入Excel文件 CDatabase database; char *sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)";// Excel安装驱动 char sExcelFile[MAX_PATH]; sprintf(sExcelFile,"%s\\data.xls",g_csPathBuff);// 要建立的Excel文件 char sSql[500]; DeleteFile(sExcelFile); TRY { // 创建进行存取的字符串 sprintf(sSql,"DRIVER={%s};DSN='''';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s", sDriver, sExcelFile, sExcelFile); // 创建数据库 (既Excel表格文件) database.OpenEx(sSql,CDatabase::noOdbcDialog); // 创建表结构(雷管数量、爆破坐标、爆破日期、、、) sprintf(sSql, "CREATE TABLE 批次%d ( 雷管数量 TEXT,爆破日期 TEXT,经度 TEXT,纬度 TEXT,爆破人员编号 TEXT,起爆器编号 TEXT,信息状态 TEXT,雷管编号 TEXT,雷管ID TEXT,延迟时间 TEXT)", i); // 执行SQL语句 database.ExecuteSQL(sSql); sprintf(sSql, "INSERT INTO 批次%d(雷管数量,爆破日期,经度,纬度,爆破人员编号,起爆器编号,信息状态) VALUES(%s,%s,%s,%s,%s,%d,%s)", i, g_DBDArray[i].ucDetonatorLength, g_DBDArray[i].ucBlastingDate, csJingdu, csWeidu, g_DBDArray[i].ucOperatorID, g_nOperatorDev, g_DBDArray[i].ucIsRead ); // 执行SQL语句 database.ExecuteSQL(sSql); } CATCH (CMemoryException, e) { AfxMessageBox("数据写入到Excel出错了"); database.Close(); } END_CATCH
二:读Excel文档。
1、首先要填如下支持类。
2、怎么添加(即添加excel头文件)
3、记得在App类中的InitInstance函数最前面加入AfxOleInit()函数初始化组件。
4、上二步做好后就可以写打开.xls文档的代码了。
// TODO: Add your control notification handler code here _Application objApp;//判断是否存在EXCEL应用程序 Workbooks objBooks; _Workbook objBook; Worksheets objSheets; _Worksheet objSheet; Range objRange,usedRange;//单元格获取 Font font; objApp.CreateDispatch("Excel.Application");//判断是否存在EXCEL应用程序 COleVariant VOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR); objApp.SetVisible(TRUE); objApp.SetUserControl(TRUE); LPDISPATCH pwkbooks=objApp.GetWorkbooks(); objBooks.AttachDispatch(pwkbooks,TRUE); objBooks=objApp.GetWorkbooks();// objBook=objBooks.Add(VOptional); objSheets=objBook.GetSheets(); char sExcelFile[MAX_PATH]; sprintf(sExcelFile,"%s\\data.xls",g_csPathBuff);// 要建立的Excel文件 objBooks.Open(sExcelFile,VOptional,VOptional,VOptional,VOptional,VOptional,VOptional, VOptional,VOptional,VOptional,VOptional,VOptional,VOptional,VOptional,VOptional);
5、效果如下。