#pragma once #include "ExcelEngine.h" // 扩展Excel引擎,支持导出图片,暂未涉及 class I_PLUGIN_EXPORT ExcelEngineEx : public ExcelEngine { Q_OBJECT public: ExcelEngineEx(); ~ExcelEngineEx(); /// @brief 获取excel的数据信息 /// @note bAutoLoad是否自动加载首页信息 virtual bool loadExcel(const QString &sFilePath, bool bAutoLoad = true); /// @brief 获取excel的数据(组成的矩形网格),注:Excel的索引均是从1开始 /// @param vvecData 获取到的数据 /// @param nRowFrom Excel开始行,从1开始 /// @param nColFrom Excel开始列,从1开始 /// @param nRowTo Excel结束行,从1开始,默认为-1,nRowTo=最大行数 /// @param nColTo Excel结束列,从1开始,默认为-1,nColTo=最大列数 virtual bool getCellValues(VVecVariant& vvecData, \ int nRowFrom = 1, int nColFrom = 1, int nRowTo = -1, int nColTo = -1); /// @brief 设置excel的数据(组成的矩形网格),注:Excel的索引均是从1开始 /// @param vvecData 需要填充设置的数据 /// @param nRowFrom Excel开始行,从1开始 /// @param nColFrom Excel开始列,从1开始 /// @param bFormat 设置数据之后,是否重置表格样式 virtual bool setCellValues(const VVecVariant& vvecData, \ int nRowFrom = 1, int nColFrom = 1, \ bool bFormat = false); /// @brief 在设置完毕数据后,对Range进行格式调整 virtual bool formatRange(QAxObject*& pRange); /// @brief 导出图片格式的内容 /// @param vvecData 数据 /// @param pVecTitles 标题(可以为空) /// @param mapImgs 图片,行位置对应 /// @param mapSizes 图片Size,行位置对应 /// @param nRowFrom Excel开始行,从1开始 /// @param nColFrom Excel开始列,从1开始 /// @param fImgColWidth图片列 宽度 /// @param nTemplIndex模板,0:魏氏、1:马氏 /// @param sLog 日志 virtual bool runBatchValues(VVecVariant vvecData, QStringList* pVecTitles, \ QMap& mapImgs, QMap& mapSizes, \ int nRowFrom, int nColFrom, \ float fImgColWidth, \ int nTemplIndex, \ QString& sLog); /// @brief 读取图片格式+文本格式的内容 /// @param vvecData 数据 /// @param mapImgs 图片,行位置对应 /// @param mapSizes 图片Size,行位置对应 /// @param nRowFrom Excel开始行,从1开始 /// @param nColFrom Excel开始列,从1开始 /// @param nTemplIndex模板,0:魏氏、1:马氏 /// @param sLog 日志 virtual bool getBatchValues(VVecVariant& vvecData, \ QMap& mapImgs, QMap& mapSizes, \ int nRowFrom, int nColFrom, \ int nTemplIndex, \ QString& sLog); protected: /// @brief 解析图片Map的Value virtual bool checkImgFile(QString& sImg); /// @brief 对Size进行调整,变为实际Excel大小 virtual bool checkImgSizes(QMap& map, double dImgWidthMax); /// @brief 图片插入完成后,对图片列进行调整 /// @note r1<=r2 c1<=c2 virtual bool formatImgsBounds(int r1, int r2, int c1, int c2); };