📄 excelrw.cpp
字号:
#include "StdAfx.h"
#include "ExcelRW.h"
CExcelRW::CExcelRW()
{
m_bIsOpened = false;
}
CExcelRW::~CExcelRW()
{
CoUninitialize();
Close();
}
bool CExcelRW::Open(CString filename, CString sheet)
{
if (CoInitialize(NULL)!=0)
{
AfxMessageBox("初始化COM支持库失败!");
return false;
}
LPDISPATCH lpDisp;
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
if(!m_ExcelApp.CreateDispatch("Excel.Application"))
{
AfxMessageBox("Couldn't CreateDispatch() for Excel");
return false;
}
lpDisp = m_ExcelApp.GetWorkbooks();
m_wbsMyBooks.AttachDispatch(lpDisp); // Attach the IDispatch pointer
// to the books object.
lpDisp = m_wbsMyBooks.Open(filename.GetBuffer(0),
covOptional, covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional);
m_wbMyBook.AttachDispatch(lpDisp);
//得到Worksheets
m_wssMysheets.AttachDispatch(m_wbMyBook.GetWorksheets(),true);
//得到sheet1
m_wsMysheet.AttachDispatch(m_wssMysheets.GetItem(_variant_t(sheet.GetBuffer(0))),true);
//得到全部Cells,此时,rgMyRge是cells的集合
//m_rgMyRge.AttachDispatch(m_wsMysheet.GetCells(),true);
m_bIsOpened = true;
return m_bIsOpened;
}
void CExcelRW::Close()
{
m_wbsMyBooks.Close();
m_ExcelApp.Quit();
//释放对象
m_rgMyRge.ReleaseDispatch();
m_wsMysheet.ReleaseDispatch();
m_wssMysheets.ReleaseDispatch();
m_wbMyBook.ReleaseDispatch();
m_wbsMyBooks.ReleaseDispatch();
m_ExcelApp.ReleaseDispatch();
}
void CExcelRW::Write(long row, long col, _variant_t value)
{
m_rgMyRge.AttachDispatch(m_wsMysheet.GetCells(),true);
m_rgMyRge.SetItem(_variant_t(row),_variant_t(col), value);
}
_variant_t CExcelRW::Read(long row,long col)
{
m_rgMyRge.AttachDispatch(m_wsMysheet.GetCells());
m_rgMyRge.AttachDispatch(m_rgMyRge.GetItem (_variant_t(row),_variant_t(col)).pdispVal);
_variant_t type;
_variant_t vResult = m_rgMyRge.GetValue(type);
return vResult;
}
CString CExcelRW::ReadStr(long row,long col)
{
m_rgMyRge.AttachDispatch(m_wsMysheet.GetCells());
m_rgMyRge.AttachDispatch(m_rgMyRge.GetItem (_variant_t(row),_variant_t(col)).pdispVal);
_variant_t vResult = m_rgMyRge.GetText();
//_ASSERT(vResult.vt == VT_BSTR);
return vResult.bstrVal;
}
void CExcelRW::Save(CString filename)
{
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
m_ExcelApp.SetDisplayAlerts(false);
m_wbMyBook.SaveAs(_variant_t(filename.GetBuffer(0)),
covOptional, covOptional, covOptional,
covOptional, covOptional, 0,
covOptional, covOptional, covOptional,
covOptional, covOptional);
m_ExcelApp.SetDisplayAlerts(true);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -