QTQTableWidget转xlsx

QXlsx

作为QT的表格控件,还是很好用的。但是这个Qxlsx博客上关于它的内容很少,而且质量也参差不齐。。。楼主在踩完各种坑后自己也总结一下。
QTableWidget有许多好用的方法可以直接使用:(记得前面加上ui->控件名,这里只列出了方法)
setStyleSheet(“QTableWidget::item{border:1px solid ;}”);//线条加粗
setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);//居中
horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);//水平方向自适应
verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);//垂直方向自适应
item->setFlags(item->flags() & (~Qt::ItemIsEditable));//不可修改
item->setBackground(QBrush(QColor(Qt::lightGray)));//加阴影
建表格也很简单可以直接设置表格行列数setrowcount和setcolumncount
注意:item是一个指针,记录了坐标值的地址,如果不setItem的话指向的该坐标的item为空,很多异常中断都是这个引起的,很多其他控件也是。
很多东西网上都有,但是遇到网上内容质量不高的时候记得去查官方文档。
这里我留一下QXlsx的官方文档,涉及的操作上面都有讲
http://qtxlsx.debao.me/
QXlsx模块的下载/编译:https://github.com/dbzhang800/QtXlsxWriter.git上面也有详细说明。
我在使用的时候用到了写和合并单元格的方法:
在.pro内加入QT += xlsx
使用方法:write(A1,text):在第A列第一行插入text
mergeCells(“A1:K1”,format);:合并第一行A~K列
这里是笔者学习制作的一个xlsx比较简单,深入了解可以去看官方文档
我自己的例子:

 QXlsx::Document xlsx;
    QXlsx::Format format;//excel格式
    format.setHorizontalAlignment(QXlsx::Format::AlignHCenter);//水平居中
    format.setVerticalAlignment(QXlsx::Format::AlignVCenter);//垂直居中
    int row = ui->tableWidget_2->rowCount();
    int column = ui->tableWidget_2->columnCount();
    for (int i = 0;i < row;i++) {
        for (int j = 0;j < column;j++) {
            if (ui->tableWidget_2->item(i,j)) {//当item内有值的时候加入到execl内
                xlsx.write('A' + j + QString::number(i+1),ui->tableWidget_2->item(i,j)->text(),format);

            }
        }
    }
    xlsx.mergeCells("A1:K1",format);//合并第一行第A~K列
    xlsx.mergeCells("A2:A3",format);
    xlsx.mergeCells("B2:B3",format);
    xlsx.mergeCells("C2:C3",format);
    xlsx.mergeCells("D2:D3",format);
    xlsx.mergeCells("E2:E3",format);
    xlsx.mergeCells("F2:H2",format);
    xlsx.mergeCells("I2:K2",format);
    for (int i = 3;i < row;i+=3) {
        xlsx.mergeCells("A" + QString::number(i+1) + ":" + "A" + QString::number(i+3),format);
        xlsx.mergeCells("B" + QString::number(i+1) + ":" + "B" + QString::number(i+3),format);
        xlsx.mergeCells("C" + QString::number(i+1) + ":" + "C" + QString::number(i+3),format);
        xlsx.mergeCells("D" + QString::number(i+1) + ":" + "D" + QString::number(i+3),format);
        xlsx.mergeCells("F" + QString::number(i+1) + ":" + "F" + QString::number(i+3),format);
        xlsx.mergeCells("I" + QString::number(i+1) + ":" + "I" + QString::number(i+3),format);
    }
    xlsx.saveAs("text.xlsx");

这个图是之前版本的代码的截图实际上所有单元格都是居中的

在这里插入图片描述
官方文档上有详细介绍:这里给出截图
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值