/**
@MyExcel.cpp
*/
#include "stdafx.h"
#include "MyExcel.h"CMyExcel::CMyExcel()
{
StartApp();
}
CMyExcel::~CMyExcel()
{
books.Close();
sheet.ReleaseDispatch();
sheets.ReleaseDispatch();
book.ReleaseDispatch();
books.ReleaseDispatch();
range.ReleaseDispatch();
ExcelApp.Quit();
ExcelApp.ReleaseDispatch();
}
//初始化excel程序
void CMyExcel::StartApp(void)
{
//创建Excel 服务器(启动Excel)
if(!ExcelApp.CreateDispatch(_T("Excel.Application"),NULL))
{
AfxMessageBox(_T("启动Excel服务器失败!"));
return ;
}
ExcelApp.put_Visible(FALSE);
ExcelApp.put_UserControl(FALSE);
}
//打开book工作簿
void CMyExcel::OpenWorkBook(const CString &strFilePath)
{
/*得到工作簿容器*/
books.AttachDispatch(ExcelApp.get_Workbooks());
/*打开一个工作簿,如不存在,则新增一个工作簿*/
CString strBookPath = strFilePath;
/*打开一个工作簿*/
lpDisp = books.Open(strBookPath,
vtMissing, vtMissing, vtMissing, vtMissing, vtMissing,
vtMissing, vtMissing, vtMissing, vtMissing, vtMissing,
vtMissing, vtMissing, vtMissing, vtMissing);
book.AttachDispatch(lpDisp);
}
//附件1的读取方法
void CMyExcel::ReadExcel(const CString &strFilePath)
{
OpenWorkBook(strFilePath);
/*得到工作簿中的Sheet的容器*/
sheets.AttachDispatch(book.get_Sheets());
lpDisp = sheets.get_Item(_variant_t((long)1));
sheet.AttachDispatch(lpDisp);
CRange oCurSel;
range.AttachDispatch(sheet.get_UsedRange());
range.AttachDispatch(range.get_Rows());
long row = range.get_Count();
range.AttachDispatch(range.get_Columns());
long col = range.get_Count();
range.AttachDispatch(sheet.get_Cells());
for(int i = 2; i <= row; ++i)
{
for(int j = 1; j <= col; ++j)
{
oCurSel.AttachDispatch(range.get_Item(_variant_t((long)i),_variant_t((long)j)).pdispVal);
VARIANT res =