类说明:https://mp.youkuaiyun.com/console/editor/html/106493081
CExcel.h
#define CRT_SECURE_NO_WARNINGS
#pragma once
#include "io.h" //_access函数
#include <Windows.h>
#include <shlwapi.h>
#include"ExcelData.h"
#pragma comment(lib,"Shlwapi.lib") //如果没有这行,会出现link错误
class CExcel
{
protected:
CString m_PathName;
int m_EndRow, m_StartRow;
int m_EndColumn, m_StartColumn;
private:
CString out_file_name;
public:
CString GetOutFileName() { return out_file_name; };
void SetOutFileName(CString new_file_name) { if (new_file_name.GetLength() > 0) out_file_name = new_file_name; }
private:
CApplication m_excelApp;
CWorkbooks m_excelBooks;
CWorkbook m_excelBook;
CWorksheets m_excelSheets;
CWorksheet m_excelSheet;
CRange m_excelRange;
LPDISPATCH lpDisp;
COleVariant vResult;
CFile file;
int m_flagClose;
public:
CExcel();
CExcel(CString PathName);
~CExcel();
void CreateExcel();
void OpenExcel(CString fileName);
int OpenExcel();
bool SaveExcel();
void CloseExcel();
void SetPathName(CString PathName) { m_PathName = PathName; }
// <summary>
// 取得特定的Worksheet
//</summary>
// <param name="SheetName">worksheet的名字</param>
//<returns></returns>
CWorksheet GetSheet(CString SheetName);
/// <summary>
/// 取得特定的Worksheet
/// </summary>
/// <param name="index">worksheet的索引,从1开始</param>
/// <returns></returns>
CWorksheet GetSheet(int index);
/// <summary>
/// 添加特定的Worksheet
/// </summary>
/// <param name="SheetName">新添加的worksheet的名字</param>
/// <returns>成功返回创建的worksheet,否则控制台打印相应的出错信息</returns>
CWorksheet AddSheet(CString SheetName);
/// <summary>
/// 取得sheet的数量
/// </summary>
/// <returns>sheet的数量</returns>
int GetSheetNum();
//操作单元格/合并单元格
/// <summary>
/// 返回特定的单元格
/// </summary>
/// <param name="ColNum">列号,从1开始,不大于255</param>
/// <param name="RowNum">行号,从1开始,不大于255</param>
/// <returns></returns>
CString GetCell(int ColNum, int RowNum);
//取得一个单元格
void SetRange(int ColNum, int RowNum);
//取得一个单元格区域
void SetRange(int StartColNum, int StartRowNum, int EndColNum, int EndRowNum);
//合并一个单元格区域
void Merge(int startRowIndex, int startColIndex, int endRowIndex, int endColIndex);
//单元格赋值/单元格区域赋值
void SetCellValue(CString value);
void SetCellValue(int row, int col, CString value);
void SetCellStringFormat()
{
m_excelRange.put_NumberFormatLocal(COleVariant(_T("@")));
}
void SetC