一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

VS2010操作Excel2010,報錯解決及讀寫excel

 紫殿 2013-03-21

版權所有,未經(jīng)允許不可作為商業(yè)用途!!轉載請注明出處??!謝謝合作??!

2013-03-20
操作系統(tǒng):Windows 7旗艦版
工具:VS2010
語言:MFC  C++

第一步:初化COM接口。在InitInstance中加入如下代碼:

1

2

3

4

5

if(!AfxOleInit())

         {

                 AfxMessageBox(_T( "Cannot initialize COM dll" ));

                 return FALSE;

         }

第二步:向工程添加Excel的C++操作類。具體步驟見下圖:
1.Ctrl+Shift+X 打開類向導。

 
 

2.添加需要的類文件。如下圖:

 
 

4.將剛才導入的類頭文件,加到模塊std中。

#include "CApplication.h"
#include "CWorkbooks.h"
#include "CWorkbook.h"
#include "CWorksheets.h"
#include "CWorksheet.h"
#include "CRanges.h"
#include "CRange.h"
//以上加入到 stdafx.h中

5、將以上頭文件的#import "C:\\Program Files\\Microsoft Office\\Office14\\EXCEL.EXE" no_namespace
替換成 以下:
#pragma region Import the type libraries
 
//#import "libid:2DF8D04C-5BFA-101B-BDE5-00AA0044DE52" 
#import "C:\\Program Files\\Common Files\\Microsoft Shared\\Office14\\MSO.DLL" \
rename("RGB", "ExclRGB") rename("DocumentProperties", "ExclDocumentProperties") \
rename("SearchPath", "ExclSearchPath")
using namespace Office;
//#import "libid:0002E157-0000-0000-C000-000000000046" 
#import "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA6\\VBE6EXT.OLB" \
rename("Reference", "ignorethis")
using namespace VBIDE;

#pragma warning( disable : 4049 )
//#import "libid:00020813-0000-0000-C000-000000000046"

#import "C:\\Program Files\\Microsoft Office\\Office14\\EXCEL.EXE" \
exclude("IFont", "IPicture") \
rename("RGB", "ExclRGB") \
rename("DocumentProperties", "ExclDocumentProperties") \
rename("SearchPath", "ExclSearchPath") \
rename("CopyFile", "ExclCopyFile") \
rename("DialogBox", "ExclDialogBox") \
rename("ReplaceText", "ExclReplaceText")

using namespace Excel;

6、編譯,出現(xiàn)
 
雙擊error C2059,將VARIANT DialogBox()改成VARIANT _DialogBox()
再次編譯,通過??!

以下為讀excel操作
CApplication ExcelApp;
CWorkbooks books;
CWorkbook book;
CWorksheets sheets;
CWorksheet sheet;
CRange range;
CRange excel_current_range_;
LPDISPATCH lpDisp = NULL;
CString name;
CString FilePathname;
CString Filescr = _T("F:\\BenderMenu.xlsx");
CString strSheetName = _T("Menu");
CString strItem1;
COleVariant varItem;
COleVariant File;
int PointSum = 0;
long i = 0, j = 0;
CEdit* pEdit = NULL;
int IDL = 0;
int IDA = 0;

//創(chuàng)建Excel 服務器(啟動Excel)
    if(!ExcelApp.CreateDispatch(_T("Excel.Application"),NULL))
    {
        AfxMessageBox(_T("啟動Excel服務器失敗!"));
        return;
    }
ExcelApp.put_Visible(FALSE);
ExcelApp.put_UserControl(TRUE);

books.AttachDispatch(ExcelApp.get_Workbooks());
CFileDialog Fdlg(TRUE, _T("Worksheet Files (*.xlsx)|*.xlsx"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("Worksheet Files (*.xlsx)|*.xlsx"), NULL);
Fdlg.m_ofn.lpstrInitialDir = _T("F:\\");

if(IDOK == Fdlg.DoModal())
{
//get path of the file
FilePathname = Fdlg.GetPathName();
//File = FilePathname;
}
else
{
return;
}

    //打開一個工作簿
    lpDisp = books.Open(FilePathname, 
        vtMissing, vtMissing, vtMissing, vtMissing, vtMissing,
        vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, 
        vtMissing, vtMissing, vtMissing, vtMissing);

if(lpDisp != NULL)
{
book.AttachDispatch(lpDisp);
}
    sheets.AttachDispatch(book.get_Sheets());
lpDisp = sheets.get_Item(_variant_t(strSheetName));
if(lpDisp != NULL)
{
sheet.AttachDispatch(lpDisp);
}
//以上為關聯(lián)sheet,book等,,以下為讀操作
range.AttachDispatch(sheet.get_Cells());//一定要,不知道為何
range.AttachDispatch(range.get_Item(COleVariant((long)20), COleVariant((long)2)).pdispVal, TRUE);//關聯(lián)(20,2)單元格
varItem = range.get_Value2();
strItem1.Format(_T("%.lf"), varItem.dblVal);//知道是double類型,直接使用,若不知道得做類型判斷
PointSum = _ttoi(strItem1);
m_PIC.m_pointSum = PointSum;
range.ReleaseDispatch();
//以下為寫excel
range.AttachDispatch(sheet.get_Cells());
range.AttachDispatch(range.get_Item(COleVariant((long)i), COleVariant((long)2)).pdispVal, TRUE);
//varItem.dblVal = m_PIC.m_Len[i - 2];
//range.put_Item(COleVariant((long)i), COleVariant((long)2), COleVariant(m_PIC.m_Len[i - 2]));
range.put_Value2(COleVariant(m_PIC.m_Len[i - 2]));
range.ReleaseDispatch();
//最后保存
book.Save();
//釋放對象
sheet.ReleaseDispatch();
sheets.ReleaseDispatch();
book.ReleaseDispatch();
books.ReleaseDispatch();
ExcelApp.Quit();
ExcelApp.ReleaseDispatch();

    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    久热99中文字幕视频在线| 日本东京热视频一区二区三区| 亚洲免费视频中文字幕在线观看| 精品国自产拍天天青青草原| 狠狠亚洲丁香综合久久| 亚洲清纯一区二区三区| 日韩av欧美中文字幕| 欧美日韩精品综合一区| 麻豆精品在线一区二区三区| 国产精品午夜福利免费阅读 | 午夜精品一区免费视频| 亚洲一区二区精品免费视频| 国产又色又爽又黄又大| 五月天丁香婷婷一区二区| 国产亚洲成av人在线观看| 好吊日在线观看免费视频| 欧美综合色婷婷欧美激情| 日韩aa一区二区三区| 精品欧美在线观看国产| 日韩欧美三级中文字幕| 91爽人人爽人人插人人爽| 狠狠做五月深爱婷婷综合| 国产精品国产亚洲区久久| 婷婷色香五月综合激激情| 久久精品视频就在久久| 日本少妇aa特黄大片| 国产又粗又猛又长又大| 欧美人妻免费一区二区三区| 黄色美女日本的美女日人| 成在线人免费视频一区二区| 粗暴蹂躏中文一区二区三区| 中国一区二区三区不卡| 超碰在线免费公开中国黄片| 日韩免费午夜福利视频| 久久精品久久久精品久久| 亚洲专区中文字幕在线| 国产日韩精品激情在线观看| 熟女免费视频一区二区| 激情亚洲内射一区二区三区| 精品人妻一区二区三区在线看| 老司机精品线观看86|