持续补充功能

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;

};
View Code

相关文章:

  • 2021-09-18
  • 2021-12-26
  • 2021-06-02
  • 2022-12-23
  • 2022-12-23
  • 2021-11-27
  • 2022-12-23
  • 2021-07-13
猜你喜欢
  • 2021-06-21
  • 2021-07-27
  • 2022-12-23
  • 2021-06-01
  • 2021-11-17
  • 2022-12-23
相关资源
相似解决方案