需求:有朋友找我说要改代码,而且量很大,但是只有一部分数字要改动。

提取需求:固定文本,规律递增,保持格式

image-20230810093103531

像这样,只有这 3 个 0 是一次递增的,需要写 80 多遍。于是便问我有没有什么好方法。

开玩笑,我堂堂一个码农。

刚好最近在学 QT,那就随便用一下吧。

1、添加 QT += axcontainer

image-20230810094017001

2、整几个控件

image-20230810095452666

3、代码

//点击写入按钮触发
void MainWindow::on_pushButton_word_write_clicked()
{
    QAxObject *myword;//Word应用程序指针
    QAxObject *mydocs;//文档集指针
    QAxObject *document;//文档指针
    QAxObject *paragraph;//文本段指针

    //创建 Word 进程
    myword = new QAxObject("Word.Application");
    myword->dynamicCall("SetVisible(bool Visible)", "false");//隐藏不显示文档窗体
    myword->setProperty("DisplayAlerts", false); //屏蔽文档的警告消息

    //获取文档集
    mydocs = myword->querySubObject("Documents");
    mydocs->dynamicCall("Add(void)");//添加一个文档
    document= myword->querySubObject("ActiveDocument");//指向当前活动文档
    paragraph = myword->querySubObject ("Selection");//指向当前选中文本
    //拿到开始的数值
    int startnumber = ui->lineEdit_word_startnumber->text().toInt();
    //拿到写多长
    int writenumber = ui->lineEdit_word_writelen->text().toInt();

    //拼凑字符串
    QString writewoldstr="";
    QString writewoldstrt1="\n<DOI desc=\"";
    QString writewoldstrt2="号密度表温度\" name=\"Temp";
    QString writewoldstrt3="\">\n\t<DAI name=\"dU\">\n\t\t<Val>";
    QString writewoldstrt4="号密度表温度</Val>\n\t</DAI>\n</DOI>";
    for(int c=0;c<writenumber;c++){
        QString n = QString::number(startnumber+c);
        writewoldstr.append(writewoldstrt1);
        writewoldstr.append(n);
        writewoldstr.append(writewoldstrt2);
        writewoldstr.append(n);
        writewoldstr.append(writewoldstrt3);
        writewoldstr.append(n);
        writewoldstr.append(writewoldstrt4);
    }
    //写入从界面文本框获取的文本
    paragraph->dynamicCall("TypeText(const QString&)", writewoldstr);
    //保存文档
    document->dynamicCall("SaveAs(const QString&)","D:\\Qt5.doc");
    //关闭
    delete paragraph;
    paragraph= nullptr;
    document->dynamicCall("Close()");
    myword->dynamicCall("Quit()");
    QMessageBox::information(this, tr("完毕") , tr("Word 文档己保存")) ;
}

4、效果

image-20230810095623866

代码中保存文档路径中找到文档

image-20230810095717214

image-20230810095659859

好啦,完事

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

flechazo 微信支付

微信支付

flechazo 支付宝

支付宝

flechazo 贝宝

贝宝