MFC操作Excel.docx
- 文档编号:10577718
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:19
- 大小:18.08KB
MFC操作Excel.docx
《MFC操作Excel.docx》由会员分享,可在线阅读,更多相关《MFC操作Excel.docx(19页珍藏版)》请在冰豆网上搜索。
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)
{
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC 操作 Excel