第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

求一個(gè)在VS2008中用MFC自動(dòng)化EXCEL2007實(shí)例

求一個(gè)在VS2008中用MFC自動(dòng)化EXCEL2007實(shí)例

慕工程0101907 2018-09-12 06:07:29
我一直在學(xué)習(xí)MFC自動(dòng)化EXCEL2007,可是很難進(jìn)步。在這里想占用大俠5分鐘時(shí)間,傳一個(gè)成功的實(shí)例給我。將感激不盡。環(huán)境是XP系統(tǒng)32位。VS2008。EXCEL2007條件:  1。把Sheet1中A1位上的數(shù)字用C++語(yǔ)言乘以2后寫(xiě)入Sheet2中A1位上。  2. 把Sheet1中(C2,E5)位上的數(shù)字用C++語(yǔ)言乘以2后寫(xiě)入Sheet2中(C2,E5)位上。  3. 必須運(yùn)行成功。
查看完整描述

1 回答

?
侃侃無(wú)極

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊

我以前寫(xiě)過(guò)一個(gè)應(yīng)用,比較復(fù)雜,而且還是VC++ 6.0的,等明天我給你傳個(gè)簡(jiǎn)單的。

我新建了一個(gè)Win32 控制臺(tái)程序,在 stdafx.h 的結(jié)尾處添加:

 

#import "c:\\Program Files\\Common Files\\Microsoft Shared\\OFFICE12\\MSO.DLL" rename_namespace("Office")
using namespace Office;

#import "c:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA6\\VBE6EXT.olb" rename_namespace("VBE6")
using namespace VBE6;

#import "c:\\Program Files\\Microsoft Office\\OFFICE12\\EXCEL.EXE" rename("DialogBox", "DialogBoxXL") rename("RGB", "RBGXL") rename("DocumentProperties", "DocumentPropertiesXL") exclude ("IFont","IPicture"),rename_namespace("MSExcel")
using namespace MSExcel;

#import "c:\\Program Files\\Common Files\\Designer\\msaddndr.dll" raw_interfaces_only, raw_native_types, no_namespace, named_guids

 

 

 下面的為對(duì)Excel的操作代碼:

 

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
   int nRetCode = 0;

   // 初始化 MFC 并在失敗時(shí)顯示錯(cuò)誤
   if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
   {
       // TODO: 更改錯(cuò)誤代碼以符合您的需要
       _tprintf(_T("錯(cuò)誤: MFC 初始化失敗\n"));
       nRetCode = 1;
   }
   else
   {
       // TODO: 在此處為應(yīng)用程序的行為編寫(xiě)代碼。
       HRESULT hr=NULL;

       // 初始化 COM 庫(kù)
       hr = CoInitialize(NULL);
       if(FAILED(hr))
       {
           _tprintf(_T("錯(cuò)誤: COM 初始化失敗\n"));
           nRetCode = 1;
           return nRetCode;
       }

       LPDISPATCH lpDisp=NULL;
       CLSID clsid;
       ::COleDispatchDriver codd;
       COleException* pError=new COleException;

       // 獲得EXCEL的CLSID
       ::CLSIDFromProgID(L"Excel.Application",&clsid);

       // 打開(kāi) Excel Application 。
       if(!codd.CreateDispatch(clsid,pError))
       {
           pError->Delete();
           _tprintf(_T("錯(cuò)誤: 打開(kāi) Excel Application 失敗\n"));
           nRetCode = 1;
           return nRetCode;
       }

       CComQIPtr <MSExcel::_Application> pApp(codd.m_lpDispatch);
       
       // 顯示 Excell Application。
       pApp->PutVisible(0,TRUE);
       codd.ReleaseDispatch();

       CComQIPtr <MSExcel::Workbooks> pCurDocs;
       CComQIPtr <MSExcel::_Workbook> pCurDoc;
       CComQIPtr <MSExcel::_Worksheet> pCurSheet;
       CComQIPtr <MSExcel::Range> pCurRange;

       COleVariant vTrue((short)TRUE),vFalse((short)FALSE);
       COleVariant vNull(L"");
       COleVariant vZero((short)0);        
       COleVariant vOptional((long)DISP_E_PARAMNOTFOUND,   VT_ERROR);

       // 保存文件名。
       COleVariant vDocName(L"CppUseExcel.xlsx");

       // 獲取 Workbooks。
       pCurDocs=pApp->GetWorkbooks();

       // 新建空白工簿。
       pCurDoc=pCurDocs->Add(vNull,0);
       
       // 獲取 Sheet1 。
       pCurSheet = pCurDoc->Sheets->GetItem(1);

       // 獲取 Sheet1 的 A1 單元格,并填寫(xiě)初始值.
       pCurRange = pCurSheet->GetRange(L"A1");
       int initValue = 1234;
       pCurRange->FormulaR1C1 = initValue;

       // 獲取 Sheet1 的 A1 單元格的值.
       int nValueA1 = pCurRange->GetValue2();

       // 獲取 [C2,E5] 單元格,并填寫(xiě)初始值.
       pCurRange = pCurSheet->GetRange(L"C2",L"E5");
       pCurRange->FormulaR1C1 = initValue;

       // 獲取 Sheet1 的 [C2,E5]  單元格的值.    
       _variant_t vC2E5= pCurRange->GetValue2();

       // 獲取 Sheet2 ,并將 Sheet1 A1 單元格的值乘以 2 后填入 Sheet2 的 A1 單元格.
       //  Sheet1  [C2,E5] 單元格的值乘以 2 后填入 Sheet2 的  [C2,E5] 單元格.
       pCurSheet = pCurDoc->Sheets->GetItem(2);

       pCurRange = pCurSheet->GetRange(L"A1");
       pCurRange->FormulaR1C1 = nValueA1 *2;

       pCurRange = pCurSheet->GetRange(L"C2",L"E5");    
       
       // 這里涉及到對(duì) SAFEARRAY 中元素的操作,暫時(shí)不寫(xiě),如果你確定是
       // 在 Range [C2,E5] 中填寫(xiě)數(shù)組,我再寫(xiě)這個(gè)過(guò)程.
       pCurRange->FormulaR1C1 =vC2E5;

       hr = pCurDoc->SaveAs(
           vDocName,
           xlOpenXMLWorkbook,
           vOptional,
           vOptional,
           vFalse,
           vFalse,
           xlNoChange,
           xlLocalSessionChanges,
           vOptional,
           vOptional,
           vOptional,
           vOptional);

       if(FAILED(hr))
       {
           _tprintf(_T("錯(cuò)誤: 保存 Excel 文檔失敗\n"));
           pError->Delete();
           pApp->Quit();        
           nRetCode = 1;
           return nRetCode;
       }

       pError->Delete();
       pApp->Quit();        
   }

   return nRetCode;
}


查看完整回答
反對(duì) 回復(fù) 2018-09-25
  • 1 回答
  • 0 關(guān)注
  • 502 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)