持续补充功能
hpp
#pragma once #include "stdafx.h" #include "CApplication.h" #include "CWorkbook.h" #include "CWorksheet.h" #include "CRange.h" #include "CWorkbooks.h" #include "CWorksheets.h" #include "Cnterior.h" #include "CFont0.h" #include "CShape.h" #include "CShapes.h" #include "CPageSetup.h" #include <string> #include <vector> using namespace std; class ExcelApi { public: ExcelApi(void); ~ExcelApi(void); // 初始化Excel OLE BOOL InitExcel(); /** * @brief 新建Excel * @param[in] ExcalPath 路径 */ void CreateExcel(); /** * @brief 打开Excel * @param[in] filePath 路径 * @param[in] type 打开时是否显示EXCEL * @return BOOL 打开成功&失败 */ BOOL OpenFile(const char* filePath, bool type); /** * @brief 关闭Excel */ void CloseExcel(); /** * @brief 保存Excel */ void Save(); /** * @brief 另存为Excel * @param[in] path 另存路径 */ void SaveAs(const char* ExcalPath); /** * @brief 获取所有的工作表数量 * @return int 数量 */ int GetSheetCount(); /** * @brief 设置当前工作表 * @param[in] id 第几个sheet,从1开始 * @return BOOL 设置成功&失败 */ BOOL SetCurrentSheetByNum(const int& id); /** * @brief 设置当前工作表 * @param[in] sheet_name sheet的名字 * @return BOOL 设置成功&失败 */ BOOL SetCurrentSheetByName(string sheet_name); /** * @brief 获取单元格数据 * @param[in] row 行 * @param[in] column 列 * @return string 内容 */ string GetRangeData(const int row, const int column); /** * @brief 获取sheet名字 * @return string 名字 */ string GetSheetName(); /** * @brief 设置sheet名字 */ void SetSheetName(const int SheetNum, const char* SheetName); /** * @brief 当前sheet单元格写入内容 * @param[in] row 行 * @param[in] column 列 * @param[in] Data 内容 */ void SetRangeData(const int row, const int column, const char* Data); /** * @brief 当前sheet单元格写入内容,设置上标下标 * @param[in] row 行 * @param[in] column 列 * @param[in] Data 内容 * @param[in] type 上标或下标 */ void SetRangeDataSubscript(const int row, const int column, const char* Data, int type); /** * @brief 获得当前sheet使用的行数 * @return int 数量 */ int GetRowNum(); /** * @brief 获得当前sheet使用的列数 * @return int 数量 */ int GetColumnNum(); /** * @brief 删除单元格 * @param[in] A1 起始单元格 * @param[in] B1 结束单元格 * @param[in] type 类型(设置删除类型1.右侧单元格左移 2.下方单元格上移 3.整行 4.整列) */ void DeleteRange(char* A1, char* B1, int type); /** * @brief 添加单元格 * @param[in] A1 起始单元格 * @param[in] B1 结束单元格 * @param[in] type 类型(设置添加类型1.右侧单元格左移 2.下方单元格上移 3.整行 4.整列) */ void AddRange(char* A1, char* B1, int type); /** * @brief 设置字体和颜色 * @param[in] A1 起始单元格 * @param[in] B1 结束单元格 * @param[in] FontType 字体类型 * @param[in] FontColor 字体颜色 * @param[in] FontSize 字体大小 */ void SetFont(char* A1, char* B1, char* FontType, int FontColor, int FontSize); /** * @brief 设置单元格填充颜色 * @param[in] A1 起始单元格 * @param[in] B1 结束单元格 * @param[in] FontColor 颜色 */ void SetRangeColor(char* A1, char* B1, int RangeColor); /** * @brief 遍历某一单元格,替换内容 * @param[in] CycleName 要遍历的名字 * @param[in] NewName 写入的新名字 */ void CycleRangeSetData(char* CycleName, char* NewName); /** * @brief 遍历某一单元格,返回所在的行和列(vector) * @param[in] CycleName 要遍历的名字 */ vector<string>CycleRangeReturnRowColumn(char* CycleName); /** * @brief 刷一行值 * @param[in] CycleName 要遍历的名字 * @param[in] NewName1 写入的新名字 * @param[in] NewName2 写入的新名字 * @param[in] NewName3 写入的新名字 * @param[in] NewName4 写入的新名字 * @param[in] NewName5 写入的新名字 * @param[in] NewName6 写入的新名字 * @param[in] NewName7 写入的新名字 * @param[in] NewName8 写入的新名字 */ void ShuaValue(const char* CycleName, const char* NewName1, const char* NewName2, const char* NewName3, const char* NewName4, const char* NewName5, const char* NewName6, const char* NewName7, const char* NewName8); /** * @brief 删除当前sheet所有内容 */ void DeleteSheetRange(); /** * @brief 添加单元格框线 * @param[in] LineType 线的样式:0- no line; 1-solid; 2-big dot;3-small dot;4-dash dot; 5-dash dot dot; */ void SetRangeBorder(int LineType); /** * @brief 合并单元格 * @param[in] A1 起始单元格 * @param[in] B1 终止单元格 */ void SetRangeMerge(char* A1, char* B1); /** * @brief 拆分单元格 * @param[in] A1 起始单元格 * @param[in] B1 终止单元格 */ void SetRangeUnMerge(char* A1, char* B1); /** * @brief 清空单元格内容 * @param[in] A1 起始单元格 * @param[in] B1 终止单元格 */ void ClearContents(char* A1, char* B1); /** * @brief 设置所有字体左对齐 * @param[in] type 类型(水平对齐:默认 1 居中 -4108, 左= -4131,右=-4152) */ void SetFontHorizontalAlignment(int type); /** * @brief 设置单元格格式(文本) */ void SetRangeSetting(); /** * @brief 遍历单元格中复合条件的字体类型颜色大小/单元格颜色 * @param[in] FontType 字体类型 * @param[in] FontColor 字体颜色 * @param[in] FontSize 字体大小 * @param[in] RangeColor 单元格颜色 */ void CycleFontTypeColorSizeAndRangeColor(char* FontType, int FontColor, int FontSize, int RangeColor); /** * @brief 插入图片 * @param[in] ExcalPath 存储图片文件的路径字符串 * @param[in] ExcalPath 表示要连接到的文件 * @param[in] ExcalPath 表示将图片与文档一起保存 * @param[in] ExcalPath 图片插入位置的左上角横坐标 * @param[in] ExcalPath 图片插入位置的左上角纵坐标 * @param[in] ExcalPath 表示插入的图片的显示宽度 * @param[in] ExcalPath 表示插入的图片的显示高度 */ void AddPicture(const char* Filename, long LinkToFile, long SaveWithDocument, float Left, float Top, float Width, float Height); /** * @brief 导出PDF * @param[in] ExcalPath 路径 */ void Excel2Pdf(const char* ExcalPath); /** * @brief 设置单元格根据文字长度或宽度进行调整 * @param[in] type 类型 1为列 2为行 */ void SetAutoFit(int type); /** * @brief 设置纸张方向0默认1纵向2横向 */ void SetPageSetupOrientation(); /** * @brief 设置纸张上下左右边距的大小 */ void SetPageMargin(); /** * @brief 设置每列单元格的宽度和自动换行 * @param[in] width 列固定宽度 */ void SetRangeWidth(int width); /** * @brief 设置某一列区域单元格的宽度和自动换行 * @param[in] A1 起始单元格 * @param[in] B1 终止单元格 * @param[in] width 这一区域的单元格列固定宽度 */ void SetRangeWidth(char* A1, char* B1, int width); /** * @brief 设置每个单元格的高度 * @param[in] height 行固定高度 */ void SetRangeHeight(int height); /** * @brief 新建sheet * @param[in] SheetName sheet名字 */ void AddSheet(const char* SheetName); /** * @brief copy 当前sheet * @param[in] SheetName sheet名字 */ void CopySheet(const char* SheetName); /** * @brief 删除当前sheet */ void DeleteSheet(); private: bool IsOpenBook; bool IsOpenSheet; //Excel应用程序 CApplication ExcelApp; //Excel工作簿 CWorkbooks ExcelBooks; CWorkbook ExcelBook; //Excel工作表 CWorksheets ExcelSheets; CWorksheet ExcelSheet; //Excel单元格 CRange ExcelRange; //Excel字体 CFont0 ft; //颜色 Cnterior it; //图片 CShapes shp; //PageSetup对象 CPageSetup pagesetup; };