MFC操作Excel.docx

上传人:b****8 文档编号:10577718 上传时间:2023-02-21 格式:DOCX 页数:19 大小:18.08KB
下载 相关 举报
MFC操作Excel.docx_第1页
第1页 / 共19页
MFC操作Excel.docx_第2页
第2页 / 共19页
MFC操作Excel.docx_第3页
第3页 / 共19页
MFC操作Excel.docx_第4页
第4页 / 共19页
MFC操作Excel.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

MFC操作Excel.docx

《MFC操作Excel.docx》由会员分享,可在线阅读,更多相关《MFC操作Excel.docx(19页珍藏版)》请在冰豆网上搜索。

MFC操作Excel.docx

MFC操作Excel

MFC操作Excel

下面的操作基于Excel2003

一.初始化操作

1.导入类库

点击查看->建立类向导->AddClass...\FromatypeLibrary...->C:

\ProgramFiles\MicrosoftOffice\Office\EXCEL.EXE,接下来就可以看到导入的类excel.h,excel.cpp。

2.初始化COM

找到App的InitInstance()函数,在其中添加 AfxOleInit()函数的调用,如:

[cpp] viewplaincopy

1.if (!

AfxOleInit())  

2.  

3.{  

4.  

5.       AfxMessageBox("注册COM出错!

");  

6.  

7.       return FALSE;  

8.  

9.}  

 

二.我自己写的Excel操作类

ExcelOperate.h

[cpp] viewplaincopy

1.#include "atlbase.h"  

2.#include "excel.h"  

3.using namespace myexcel;  

4.class CExcelOperate    

5.{  

6.private:

  

7.    myexcel:

:

_Application m_ecApp;  

8.    Workbooks m_ecBooks;  

9.    _Workbook m_ecBook;  

10.    Worksheets m_ecSheets;  

11.    _Worksheet m_ecSheet;  

12.    myexcel:

:

Range m_ecRange;  

13.    VARIANT ret;//保存单元格的值  

14.public:

  

15.    CExcelOperate();  

16.    virtual ~CExcelOperate();  

17.public:

  

18.    //操作  

19.    //**********************创建新EXCEL*******************************************  

20.    BOOL CreateApp();  

21.    BOOL CreateWorkbooks();                //创建一个新的EXCEL工作簿集合  

22.        BOOL CreateWorkbook();                //创建一个新的EXCEL工作簿  

23.    BOOL CreateWorksheets();                //创建一个新的EXCEL工作表集合  

24.        BOOL CreateWorksheet(short index);                //创建一个新的EXCEL工作表  

25.    BOOL CreateSheet(short index);  

26.    BOOL Create(short index = 1);                         //创建新的EXCEL应用程序并创建一个新工作簿和工作表  

27.        void ShowApp();                        //显示EXCEL文档  

28.        void HideApp();                        //隐藏EXCEL文档  

29.    //**********************打开文档*********************************************  

30.    BOOL OpenWorkbook(CString fileName, short index = 1);  

31.        BOOL Open(CString fileName);        //创建新的EXCEL应用程序并打开一个已经存在的文档。

  

32.    BOOL SetActiveWorkbook(short i);    //设置当前激活的文档。

  

33.  

34.    //**********************保存文档*********************************************  

35.        BOOL SaveWorkbook();                //Excel是以打开形式,保存。

  

36.        BOOL SaveWorkbookAs(CString fileName);//Excel以创建形式,保存。

  

37.        BOOL CloseWorkbook();  

38.        void CloseApp();  

39.    //**********************读信息********************************  

40.    BOOL GetRangeAndValue(CString begin, CString end);//得到begin到end的Range并将之间的值设置到ret中  

41.    void GetRowsAndCols(long &rows, long &cols);//得到ret的行,列数  

42.    BOOL GetTheValue(int rows, int cols, CString &dest);//返回第rows,cols列的值,注意只返回文本类型的,到dest中  

43.    BOOL SetTextFormat(CString &beginS, CString &endS);//将beginS到endS设置为文本格式(数字的还要用下面的方法再转一次)  

44.    BOOL SetRowToTextFormat(CString &beginS, CString &endS);//将beginS到endS(包括数字类型)设置为文本格式  

45.  

46.};  

 

ExcelOperate.cpp

[cpp] viewplaincopy

CExcelOperate:

:

CExcelOperate()  

{  

  

}  

  

CExcelOperate:

:

~CExcelOperate()  

{  

  

}  

  

BOOL CExcelOperate:

:

CreateApp()  

{  

    //if (FALSE == m_wdApp.CreateDispatch("Word.Application"))  

    COleException pe;  

    if (!

m_ecApp.CreateDispatch(_T("Excel.Application"), &pe))  

    {  

        AfxMessageBox("Application创建失败,请确保安装了word 2000或以上版本!

", MB_OK|MB_ICONWARNING);  

        pe.ReportError();  

        throw &pe;  

        return FALSE;  

    }  

    return TRUE;  

}  

  

BOOL CExcelOperate:

:

CreateWorkbooks()               //创建一个新的EXCEL工作簿集合  

{  

    if (FALSE == CreateApp())   

    {  

        return FALSE;  

    }  

    m_ecBooks = m_ecApp.GetWorkbooks();  

    if (!

m_ecBooks.m_lpDispatch)   

    {  

        AfxMessageBox("WorkBooks创建失败!

", MB_OK|MB_ICONWARNING);  

        return FALSE;  

    }  

    return TRUE;  

}  

  

BOOL CExcelOperate:

:

CreateWorkbook()               //创建一个新的EXCEL工作簿  

{  

    if(!

m_ecBooks.m_lpDispatch)   

    {  

        AfxMessageBox("WorkBooks为空!

", MB_OK|MB_ICONWARNING);  

        return FALSE;  

    }  

  

    COleVariant vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);  

  

    m_ecBook = m_ecBooks.Add(vOptional);  

    if(!

m_ecBook.m_lpDispatch)   

    {  

        AfxMessageBox("WorkBook为空!

", MB_OK|MB_ICONWARNING);  

        return FALSE;  

    }  

/* 

    //得到document变量 

    m_wdDoc = m_wdApp.GetActiveDocument(); 

    if (!

m_wdDoc.m_lpDispatch)  

    { 

        AfxMessageBox("Document获取失败!

", MB_OK|MB_ICONWARNING); 

        return FALSE; 

    } 

    //得到selection变量 

    m_wdSel = m_wdApp.GetSelection(); 

    if (!

m_wdSel.m_lpDispatch)  

    { 

        AfxMessageBox("Select获取失败!

", MB_OK|MB_ICONWARNING); 

        return FALSE; 

    } 

    //得到Range变量 

    m_wdRange = m_wdDoc.Range(vOptional,vOptional); 

    if(!

m_wdRange.m_lpDispatch) 

    { 

        AfxMessageBox("Range获取失败!

", MB_OK|MB_ICONWARNING); 

        return FALSE; 

    } 

*/  

    return TRUE;  

}  

  

BOOL CExcelOperate:

:

CreateWorksheets()                //创建一个新的EXCEL工作表集合  

{  

    if(!

m_ecBook.m_lpDispatch)   

    {  

        AfxMessageBox("WorkBook为空!

", MB_OK|MB_ICONWARNING);  

        return FALSE;  

    }  

    m_ecSheets = m_ecBook.GetSheets();  

    if(!

m_ecSheets.m_lpDispatch)   

    {  

        AfxMessageBox("WorkSheets为空!

", MB_OK|MB_ICONWARNING);  

        return FALSE;  

    }  

    return TRUE;  

}  

  

BOOL CExcelOperate:

:

CreateWorksheet(short index)                //创建一个新的EXCEL工作表  

{  

    if(!

m_ecSheets.m_lpDispatch)   

    {  

        AfxMessageBox("WorkSheets为空!

", MB_OK|MB_ICONWARNING);  

        return FALSE;  

    }  

    m_ecSheet = m_ecSheets.GetItem(COleVariant(index));  

    if(!

m_ecSheet.m_lpDispatch)   

    {  

        AfxMessageBox("WorkSheet为空!

", MB_OK|MB_ICONWARNING);  

        return FALSE;  

    }  

    return TRUE;  

}  

  

BOOL CExcelOperate:

:

CreateSheet(short index)  

{  

    if(CreateWorksheets() == FALSE)  

    {  

            return FALSE;  

    }  

    if(CreateWorksheet(index) == FALSE)  

    {  

            return FALSE;  

    }  

    return TRUE;  

}  

  

BOOL CExcelOperate:

:

Create(short index)                        //创建新的EXCEL应用程序并创建一个新工作簿和工作表  

{  

    if(CreateWorkbooks() == FALSE)  

    {  

        return FALSE;  

    }  

    if(CreateWorkbook() == FALSE)  

    {  

        return FALSE;  

    }  

    if(CreateSheet(index) == FALSE)  

    {  

        return FALSE;  

    }  

    return TRUE;  

}  

  

void CExcelOperate:

:

ShowApp()                        //显示WORD文档  

{  

    m_ecApp.SetVisible(TRUE);  

}  

  

void CExcelOperate:

:

HideApp()                       //隐藏word文档  

{  

    m_ecApp.SetVisible(FALSE);  

}  

  

//**********************打开文档*********************************************  

BOOL CExcelOperate:

:

OpenWorkbook(CString fileName, short index)  

{  

    if(!

m_ecBooks.m_lpDispatch)   

    {  

        AfxMessageBox("WorkSheets为空!

", MB_OK|MB_ICONWARNING);  

        return FALSE;  

    }  

    //COleVariant vFileName(_T(fileName));  

    COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);  

    m_ecBook = m_ecBooks.Open(fileName,VOptional, VOptional, VOptional, VOptional,VOptional, VOptional, VOptional, VOptional,VOptional, VOptional, VOptional, VOptional, VOptional, VOptional);  

    if(!

m_ecBook.m_lpDispatch)   

    {  

        AfxMessageBox("WorkSheet获取失败!

", MB_OK|MB_ICONWARNING);  

        return FALSE;  

    }  

    if(CreateSheet(index) == FALSE)  

    {  

        return FALSE;  

    }  

    return TRUE;  

}  

  

BOOL CExcelOperate:

:

Open(CString fileName)        //创建新的EXCEL应用程序并打开一个已经存在的文档。

  

{  

    if(CreateWorkbooks() == FALSE)  

    {  

        return FALSE;  

    }  

    return OpenWorkbook(fileName);  

}  

  

/*BOOL CExcelOperate:

:

SetActiveWorkbook(short i)    //设置当前激活的文档。

  

{  

}*/  

  

//**********************保存文档*********************************************  

BOOL CExcelOperate:

:

SaveWorkbook()                //文档是以打开形式,保存。

  

{  

    if (!

m_ecBook.m_lpDispatch)   

    {  

        AfxMessageBox("Book获取失败!

", MB_OK|MB_ICONWARNING);  

        return FALSE;  

    }  

    m_ecBook.Save();  

    return TRUE;  

}  

BOOL CExcelOperate:

:

SaveWorkbookAs(CString fileName)//文档以创建形式,保存。

  

{  

    if (!

m_ecBook.m_lpDispatch)   

    {  

        AfxMessageBox("Book获取失败!

", MB_OK|MB_ICONWARNING);  

        return FALSE;  

    }  

    COleVariant vTrue((short)TRUE),      

                vFalse((short)FALSE),  

                vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);  

    COleVariant vFileName(_T(fileName));  

  

    m_ecBook.SaveAs(  

                vFileName,    //VARIANT* FileName  

                vOptional,    //VARIANT* FileFormat  

                vOptional,    //VARIANT* LockComments  

                vOptional,    //VARIANT* Password  

                vOptional,    //VARIANT* AddToRecentFiles  

                vOptional,    //VARIANT* WritePassword  

                0,    //VARIANT* ReadOnlyRecommended  

                vOptional,    //VARIANT* EmbedTrueTypeFonts  

                vOptional,    //VARIANT* SaveNativePictureFormat  

                vOptional,    //VARIANT* SaveFormsData  

                vOptional,    //VARIANT* SaveAsAOCELetter  

                vOptional    //VARIANT* ReadOnlyRecommended  

/*                vOptional,    //VARIANT* EmbedTrueTypeFonts  

                vOptional,    //VARIANT* SaveNativePictureFormat  

                vOptional,    //VARIANT* SaveFormsData  

                vOptional    //VARIANT* SaveAsAOCELetter*/  

                );  

    return    TRUE;  

}  

BOOL CExcelOperate:

:

CloseWorkbook()  

{  

    COleVariant vTrue((short)TRUE),      

                vFalse((short)FALSE),  

                vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);  

      

    m_ecBook.Close(vFalse,    // SaveChanges.  

             vTrue,            // OriginalFormat.  

             vFalse            // RouteDocument.  

             );  

    m_ecBook = m_ecApp.GetActiveWorkbook();  

    if(!

m_ecBook.m_lpDispatch)   

    { 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1