记录VC 6.0操作Excel记录

版权声明:copyright by 哈佛小丸子 https://blog.csdn.net/hafoxiaowanzi/article/details/49793777

      其实这个功能在度娘一搜大把的代码,其实文中的代码大部分都是出自度娘,只是为了便于自己的记忆与查询,我在这里重复的记录一下代买。我自己定义了一个CExcelOper  的类,该类封装了基本的函数,也没什么好说的,将代码贴上来:

头文件 ExcelOper.h

#include "excel.h"
#include "comdef.h" 
#include "COMUTIL.H"
//#include "StructData.h"


class CExcelOper  
{
public:
CExcelOper();
virtual ~CExcelOper();

_Application         m_oExcelApp;              // Excel程序
_Worksheet           m_oWorkSheet;     // 工作表
_Workbook            m_oWorkBook;      // 工作簿
Workbooks            m_oWorkBooks;    // 工作簿集合
Worksheets           m_oWorkSheets;    // 工作表集合
Range                m_oCurrRange;      // 使用区域

BOOL InitialExcel();
BOOL OpenExcel(LPCSTR lpstrFileName);
long GetCurrentRowNum();
// BOOL WriteDataToFIR(long lCurrentRow,pstCHResult pdata,CString strSN);
void Search3TempMaxMinValue(int nArryCount,double *pdbArryData,double *pdbGetMaxValue,double* pdbGetMinValue);
BOOL CloseExcel(BOOL bSave,LPCSTR lpstrFileName);
void JudgeSNIsExsit(int nCurrRoe,LPCSTR lpstrSN,long *pnGetCurrRow);
BOOL ReadSourceCurve();
BOOL CalcBW();
BOOL WriteBWToExcel();
void YieldToPeers();
BOOL SearchMinILIndex(double *pdbData,int nCount,int* pnMinIndex);
BOOL SearchBWIndex(int nType,double *pdbData,double dbdeta,int nCount,int nTotalCount,int nCenterIndex,int *pnGetIndex);
double *pdbWL;
double *pdbReadPower[24];
double m_pdbBW[24];

};

下面是CPP

/////////////////////////////////////////////////////////
//函数说明:
//   初始化Excel组件
//Add by wanxin
//Time:20151013
//////////////////////////////////////////////////////////
BOOL CExcelOper::InitialExcel()
{
// if (CoInitialize(NULL)!=0) 
//
//         AfxMessageBox("初始化Excel组件支持库失败!"); 
//         return FALSE;
// }
//启动Excel
if (!m_oExcelApp.CreateDispatch( _T( "Excel.Application" ), NULL ) ) 
{
::MessageBox( NULL, _T( "创建Excel服务失败!" ), _T( "错误提示!" ), MB_OK | MB_ICONERROR); 
return FALSE;
}
    //设置为显示
    m_oExcelApp.SetVisible(FALSE);
    m_oWorkBooks.AttachDispatch( m_oExcelApp.GetWorkbooks(), TRUE ); //没有这条语句,下面打开文件返回失败。
//
return TRUE;
}

/////////////////////////////////////////////////////////
//函数说明:
//   打开Excel文件
//Add by wanxin
//Time:20151013
//////////////////////////////////////////////////////////
BOOL CExcelOper::OpenExcel(LPCSTR lpstrFileName)
{
    
    LPDISPATCH lpDisp = NULL;
    COleVariant covTrue((short)TRUE);
    COleVariant covFalse((short)FALSE);
    COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); 
    Range            oCurCell;

// 打开文件
lpDisp = m_oWorkBooks.Open( lpstrFileName, 
_variant_t(vtMissing), 
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing) );
// 获得活动的WorkBook( 工作簿 )
m_oWorkBook.AttachDispatch( lpDisp, TRUE );
// 获得活动的WorkSheet( 工作表 )
m_oWorkSheet.AttachDispatch( m_oWorkBook.GetActiveSheet(), TRUE );


return TRUE;
}
///////////////////////////////////////////////////////////
//函数说明:
//   获得当前sheet行数
//Add by wanxin
//Time:20151013
//////////////////////////////////////////////////////////
long CExcelOper::GetCurrentRowNum()
{
long lgUsedRowNum = 0;
m_oCurrRange.AttachDispatch( m_oWorkSheet.GetUsedRange(), TRUE );
m_oCurrRange.AttachDispatch( m_oCurrRange.GetRows(), TRUE );
lgUsedRowNum = m_oCurrRange.GetCount();
return lgUsedRowNum;
}




猜你喜欢

转载自blog.csdn.net/hafoxiaowanzi/article/details/49793777