QT 中使用QXlsx 读写文件
PC 工具中需要操作xlsx格式的数据,前面使用的是QAxObject,需要一些设置,还要安装office的控件或者wps的控件,在一些电脑上面有的时候还会有异常,后面发现一个好像的开源库QXls,发现读写的速度比以前快,而且只需要简单的添加文件到工程中就可以。
Qxlsx 源码的地址:https://github.com/QtExcel/QXlsx
下载下来之后我们只是需要其中的一个文件夹:
将QXlsx 文件夹copy到你的工程目录下面
然后添加QXlsx.pri 到你工程的pro文件中
include($$PWD/QXlsx/QXlsx.pri)
下面给出一个简单的例子
头文件中定义一个
QXlsx::Document* m_xlsx = nullptr;
if(!m_xlsx)
{
m_xlsx = new QXlsx::Document("./xxxxx.xlsx", this);
}
if(m_xlsx->load()) // 判断文件是否打开成功(也可以使用isLoadPackage)
{
qDebug() << "excel success";
QXlsx::Worksheet* sheet =(QXlsx::Worksheet*) m_xlsx->sheet("SOAService_Deployment");
if (!sheet)
{
qDebug() << "Sheet 'SOAService_Deployment' not found";
return ;
}
else
{
int row=sheet->dimension().lastRow();
for(int i=3;i<=row;i++)
{
std::shared_ptr<QXlsx::Cell> cell = sheet->cellAt(i, 19);
if (cell)
{
QVariant value = cell->readValue();
model->appendRow(new QStandardItem(value.toString()));
qDebug() << "Row:" << i << "Column:" << 19 << "Value:" << value.toString();
}
cell = sheet->cellAt(i, 20);
QVariant value = cell->readValue();
qDebug() << "Row:" << i << "Column:" << 20 << "Value:" << value.toString();
}
}
}
else
{
qDebug()<<"fail";
}
if (m_xlsx)
{
delete m_xlsx;
m_xlsx=nullptr;
}
然后就可以把xlsx文件中的内容读取出来。