目录
前篇《利用QT QAxObject读取Excel表格数据的两种方法比较》介绍到QT一次性读取 Excel表格数据并显示的方法,主要是构建一个数据模型 QList<QList<QVariant> > 用于存放表格数据。
实际应用中,我们读取Excel表格数据并显示的目的主要是为了便于修改数据,可视化数据。
那么这些读取到的数据该如何进行必要的修改呢?
QList< QList<QVariant> > datas;//构建数据模型用于存储数据
qDebug()<<datas.size(); //表格的总行数
qDebug()<<datas.at(0).size(); //第一行的列数
for (int a=0;datas.size()>a ;a++ )
{
for (int b=0;datas.at(a).size()>b ;b++ )
{
qDebug() << QString(datas.at(a).at(b).toByteArray()); //打印所有数据
}
方法一:修改指定的整行数据
我们知道QList<QList<QVariant> >数据模型的原型是QList(const QList<T> &),因此可以通过修改QList<T>的变量Qvariant而修改整行数据
QVariant var="replace_data1";
QList<QVariant> rows={var,"replace_data2"};//第一种赋值方法
// rows<<"replace_data1"<<"replace_data2";//第二种赋值方法
datas.replace(0,rows);//替换第1行数据为“replace_data1”“replace_data2”
但是这样显然非常不人性化!
一次性修改的是整行数据,而我们往往只需要修改某个特定位置的数据,每次修改要重新赋值整行数据非常繁琐。
那么有什么技巧呢?
方法二:修改指定位置的数据
QList成员列表里面有一个成员T &QList::operator[](int i)提供了快捷修改特定位置数据的方法。
T &QList::operator[](int i)Returns the item at index position i as a modifiable reference. i must be a valid index position in the list (i.e., 0 <= i < size()).
以上意思是返回 一个指定位置int i可供修改QList元素的映射。
修改QList< QList<QVariant> >中的第row个QList<QVariant> 中的第col个QVariant为“replace_data”
int row=0,col=0;//row行,col列
datas.operator[](row).replace(col,"replace_data");//修改第1行第1列数据为replace_data
综上,第一种方法适合修改整行数据,第二种方法适合修改指定位置数据。
本文介绍了如何使用QTQAxObject读取Excel数据后,进行修改的方法。包括修改整行数据和指定位置的数据。通过QList<QList<QVariant>>数据模型,演示了替换整行数据的不便,并展示了使用QList的operator[]方法更高效地修改特定位置数据的操作。
3790

被折叠的 条评论
为什么被折叠?



