QT 使用QTXlsx类库做的 代发工资生成 表格文件的小工具

主界面一键生成测试数据根据测试文件生成的表格文件

详细代码:

PRO文件

//我这里直接引用了该类库
include(../QtXlsxWriter/src/xlsx/qtxlsx.pri)

H文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTextCodec>
#include <QDebug>
#include "xlsxdocument.h"
#include <QFileDialog>
#include <QDir>
#include <QMessageBox>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = nullptr);
    ~Widget();
private slots:
    void on_tableWidget_cellChanged(int row, int column);

    void on_DeleteEmptyRow_clicked();

    void on_rest_clicked();

    void on_Test_clicked();

    void on_OutXlsx_clicked();

private:
    void Init();
    void InitWidget();
    QString getItemInfo(const int& row,const int& column);

private:
    Ui::Widget *ui;
    QTextCodec *m_codec;
    char m_xlsxColum[6];
};

#endif // WIDGET_H

CPP文件

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    Init();
    InitWidget();
}

Widget::~Widget()
{
    delete ui;
}

void Widget::Init()
{
    m_codec = QTextCodec::codecForName("GBK");
    m_xlsxColum[0] = 'A';
    m_xlsxColum[1] = 'B';
    m_xlsxColum[2] = 'C';
    m_xlsxColum[3] = 'D';
    m_xlsxColum[4] = 'E';
    m_xlsxColum[5] = 'F';
}

void Widget::InitWidget()
{
    ui->setupUi(this);

    this->setWindowTitle(m_codec->toUnicode("西瓜撞地球 QQ:470861502"));

    ui->tableWidget->setColumnCount(6);
    ui->tableWidget->setHorizontalHeaderLabels(QStringList() <<
                                               m_codec->toUnicode("姓名") << m_codec->toUnicode("证件类型")
                                               << m_codec->toUnicode("证件号码") << m_codec->toUnicode("账卡号")
                                               << m_codec->toUnicode("金额") << m_codec->toUnicode("联系电话"));
    ui->tableWidget->insertRow(0);

    ui->tableWidget->resizeColumnsToContents();
    ui->tableWidget->resizeRowsToContents();
    ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
    ui->tableWidget->setStyleSheet("selection-background-color:lightblue;");
    ui->tableWidget->horizontalHeader()->setStyleSheet("QHeaderView::section{background:skyblue;}");

}

QString Widget::getItemInfo(const int &row, const int &column)
{
    return ui->tableWidget->item(row,column) == nullptr ? "" : ui->tableWidget->item(row,column)->text().simplified();
}


void Widget::on_tableWidget_cellChanged(int row, int column)
{
    Q_UNUSED(column)
    if(row + 1  == ui->tableWidget->rowCount())
    {
        ui->tableWidget->insertRow(ui->tableWidget->rowCount());
    }

    ui->tableWidget->resizeColumnsToContents();
    ui->tableWidget->resizeRowsToContents();
}

void Widget::on_DeleteEmptyRow_clicked()
{
    for(int row = ui->tableWidget->rowCount()-1 ; row >= 0 ; --row)
    {
        if(getItemInfo(row,0).isEmpty() &&
                getItemInfo(row,1).isEmpty() &&
                getItemInfo(row,2).isEmpty() &&
                getItemInfo(row,3).isEmpty() &&
                getItemInfo(row,4).isEmpty() &&
                getItemInfo(row,5).isEmpty() )
        {
            ui->tableWidget->removeRow(row);
        }
    }

    if(ui->tableWidget->rowCount() == 0)
        ui->tableWidget->insertRow(0);
}

void Widget::on_rest_clicked()
{
    ui->tableWidget->clearContents();
    ui->tableWidget->setRowCount(1);
}

void Widget::on_Test_clicked()
{
    ui->tableWidget->clearContents();
    ui->tableWidget->setRowCount(10);

    for(int row = 0 ; row < 10 ; row ++)
    {
        for(int colum = 0 ; colum < 6 ; colum++)
        {
            ui->tableWidget->setItem(row,colum,new QTableWidgetItem(QString("Row:[%1],Col[%2]").arg(row).arg(colum)));
        }
    }

    ui->tableWidget->removeRow(ui->tableWidget->rowCount() -1);
}

void Widget::on_OutXlsx_clicked()
{
    QString fileName = QFileDialog::getSaveFileName(this, m_codec->toUnicode("保存文件"),
                                 QDir::currentPath(),
                                 tr("Files(*.xlsx)"));
    if(fileName.isEmpty())
    {
        QMessageBox::critical(this,m_codec->toUnicode("错误"),m_codec->toUnicode("文件名不正确!"));
        return ;
    }

    on_DeleteEmptyRow_clicked();

    QXlsx::Document xlsx(fileName);

    for(int row = 0 ; row < ui->tableWidget->rowCount() ; row++)
    {
        for(int colum = 0 ; colum < 6 ; colum++)
        {
             xlsx.write(QString("%1%2").arg(m_xlsxColum[colum]).arg(row), this->getItemInfo(row,colum));
        }
    }

    if(xlsx.save())
    {
        QMessageBox::information(this,m_codec->toUnicode("提示"),m_codec->toUnicode("文件保存成功!"));
    }else
    {
        QMessageBox::critical(this,m_codec->toUnicode("错误"),m_codec->toUnicode("文件保存失败!"));
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
阔高电脑套打软件套打软件是由阔高电脑科技有限公司自己开发的打印软件,支持所有预印格式票据打印,可直接从Execel读取数据实现批量打印功能。可自定义所需要的打印票据。软件暂时只能实现文字的打印,用户可按需要自定义文字的大小,颜色;并实现支票等小写金额自动转换为大写金额功能。用户可轻松定制各种票据模版,方便地套打各种支票、进账单、存取款单、信封或者各种证卡(如选民证、出入证),充分满足了用户票据样式多样性的套打需求;满足了用户的票据管理需要,减轻了工作强度,是票据打印、设计和管理的完美解决方案。 所见及所得:支票、进账单等票据界面仿真实际票据,直观亲切,用户一见即知。 批量套打容易:本软件把要需要用户填写的内容降低到最低程度,多种录入方式,易于用户操作。 打印精确无误:票据打印美观大方、打印精确度高,精确度可达0.1毫米;一方面既加大了票据填写地准确性,另一方面又便于银行对票据的统一管理。 模版设计灵活:具有票据模版设计功能,可以设计打印所有票据。 硬件兼容性强:对市面大部分打印机,无需安装调试,即可精确打印。 产品简单易用:在任何计算机上可以快速、精确地打印支票、财务票据等所有票据。无需培训即可轻松上手。 公司承诺: 软件可无条件试用,试用功能不能改变文字属性。为了更加完善软件功能,和更适应用户要求,购买后,如有与客户要求不相符的地方,公司将无条件为用户修改或添加部分功能。 联系方式:QQ:515056493 电话: 13719410030 020-34628022 联系人:杨先生

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值