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/iData/iFileEngine/iFileEngine.h

105 lines
2.6 KiB
C

#pragma once
#include <QStringList>
#include "Defines.h"
#include "iFileEngine_global.h"
// 文件类型
enum FileEngineType
{
FET_Text = 0, //文本
FET_Dat, //Dat
FET_Excel, //Excel
FET_Ini, //Ini
FET_SQLite, //Sqlite
FET_Clipboard, //Clipboard
FET_Unknown //Unknown
};
// FileEngine
class I_FILE_ENGINE_EXPORT iFileEngine
{
public:
iFileEngine();
~iFileEngine();
public:
// 加载接口
virtual bool load(VVecVariant& vvecData, QString sFile);
// 设置头包含多少行数据
void setDataRowCountPreviewed(int n);
// 顶部文件说明信息
QString getHeaders();
// 顶部单位和标题
QStringList getTitles();
QStringList getUnits();
// 错误信息
QString getLastError();
// 是否采用编码转换
void setCodecUsingMode(bool bUse);
protected:
// 初始化参数
virtual void init();
// 解析文件头
virtual bool tryParse(QString sFile);
// 利用倒回两行try查找标题单位
virtual bool tryParseTitleUnit(QString s);
protected:
QString m_sError; //存错误信息
QString m_sHeaders; //顶部文件说明信息
QStringList m_listTitles; //顶部单位和标题
QStringList m_listUnits;
int m_nLineIndexValue; //数据起始行
int m_nLineIndexTitle;
int m_nLineIndexUnit;
int m_nDataRowCountPreviewed;//头包含多少行数据,默认为2外界可传入
int m_nDataLineTryMax; //在try时数据多少条即可认为是数据默认为3
// 是否采用编码转换
bool m_bUsingCodecMode;
};
// iFileEngineUtils
class I_FILE_ENGINE_EXPORT iFileEngineUtils
{
public:
// 统一加载接口
// 如果不传入 oType 则根据文件后缀,自动识别
static bool load(VVecVariant& vvecData,
QString& sHeaders,
QString sFile,
FileEngineType oType = FET_Unknown,
QString sExt = "",//如sheetName
QString* szError = NULL);
// 统一加载接口
// 如果不传入 oType 则根据文件后缀,自动识别
static bool loadEx(VVecVariant& vvecData,
QString& sHeaders,
QStringList& listTitles,
QStringList& listUnits,
QString sFile,
FileEngineType oType = FET_Unknown,
QString sExt = "",//如sheetName
bool bUseCodec = true, //启用Codec转换
QString* szError = NULL);
};