- 读取excel表格数据
#define QSC(s) (QString::fromLocal8Bit(s))
#define INFO(s) (qInfo().noquote() << s)
QString GetexcelInfo(QString name,int i, int j);
QString GetexcelInfo(QString name,int i,int j)
{
INFO(QSC("Getexcel:读取excel数据"));
QAxObject* excel = NULL;
QAxObject* workbooks = NULL;
QAxObject* workbook = NULL;
excel = new QAxObject("Excel.Application");
excel->dynamicCall("SetVisible(bool)", false);
workbooks = excel->querySubObject("WorkBooks");
workbook = workbooks->querySubObject("Open(QString&)", name);
QAxObject* worksheets = workbook->querySubObject("WorkSheets");
QAxObject* worksheet = worksheets->querySubObject("Item(int)", 1);
QAxObject* usedrange = worksheet->querySubObject("UsedRange");
QVariantList rowList;
QAxObject* cell = worksheet->querySubObject("Cells(int,int)", i, j);
rowList.append(cell->dynamicCall("Value2()"));
delete cell;
QString info = rowList.at(0).toString();
qInfo() << QSC("获取的数据") << info;
workbook->dynamicCall("Save()");
workbook->dynamicCall("Close()");
excel->dynamicCall("Quit()");
if (excel)
{
delete excel;
excel = NULL;
}
return info;
}
- 修改excel表格数据
#include <ObjBase.h>
bool ExcelChange(QString name ,QString range, QString value_info);
bool ExcelChange(QString name,QString range, QString value_info)
{
INFO(QSC("ExcelChange:写入excel数据"));
qInfo() << QSC("获取的数据name") << name<< QSC("获取的数据range") << range<< QSC("获取的数据value_info") << value_info;
CoInitializeEx(NULL, COINIT_MULTITHREADED);
QAxObject* excel = NULL;
QAxObject* workbooks = NULL;
QAxObject* workbook = NULL;
excel = new QAxObject("Excel.Application");
excel->dynamicCall("SetVisible(bool)", false);
workbooks = excel->querySubObject("WorkBooks");
workbook = workbooks->querySubObject("Open(QString&)", name);
QAxObject* worksheets = workbook->querySubObject("WorkSheets");
qInfo() << QSC("按文件路径打开文件成功");
QAxObject* worksheet = worksheets->querySubObject("Item(int)", 1);
QAxObject* usedrange = worksheet->querySubObject("UsedRange");
QAxObject* rows = usedrange->querySubObject("Rows");
int iRows = rows->property("Count").toInt();
qInfo() << QSC("行数为: %1").arg(QString::number(iRows));
QAxObject* columns = usedrange->querySubObject("Columns");
int iColumns = columns->property("Count").toInt();
qInfo() << QSC("列数为: %1").arg(QString::number(iColumns));
int iStartRow = rows->property("Row").toInt();
qInfo() << QSC("起始行为: %1").arg(QString::number(iStartRow));
int iColumn = columns->property("Column").toInt();
qInfo() << QSC("起始列为: %1").arg(QString::number(iColumn));
QAxObject* range2 = worksheet->querySubObject("Range(QString)", range);
range2->setProperty("Value", value_info);
QString newStr = "";
newStr = range2->property("Value").toString();
qInfo() << QSC("写入数据数据为:") + newStr;
workbook->dynamicCall("Save()");
workbook->dynamicCall("Close()");
excel->dynamicCall("Quit()");
if (excel)
{
delete excel;
excel = NULL;
}
qInfo() << QSC("写入数据数据完成");
return true;
}
- 修改excel表格名字
bool RenameExcel(QString oldFileName, QString newFileName);
bool RenameExcel(QString oldFileName, QString newFileName)
{
qInfo() << QSC("RenameExcel:oldFileName") << oldFileName << QSC("RenameExcel:newFileName") << newFileName;
std::string str1 = oldFileName.toStdString();
const char* oldFileName_char = str1.c_str();
std::string str2 = newFileName.toStdString();
const char* newFileName_char = str2.c_str();
int result = rename(oldFileName_char, newFileName_char);
if (result)
{
return false;
}
qInfo() << QSC("修改excel文件名成功");
return true;
}