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、效果如下。