You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWATI/Include/iBase/iPlugin/ExcelEngineEx.h

85 lines
3.5 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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开始默认为-1nRowTo=最大行数
/// @param nColTo Excel结束列从1开始默认为-1nColTo=最大列数
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<int, QString>& mapImgs, QMap<int, QPointF>& mapSizes, \
int nRowFrom, int nColFrom, \
double 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<int, QString>& mapImgs, QMap<int, QPointF>& 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<int, QPointF>& map, double dImgWidthMax);
/// @brief 图片插入完成后,对图片列进行调整
/// @note r1<=r2 c1<=c2
virtual bool formatImgsBounds(int r1, int r2, int c1, int c2);
};