C++ QT读写Microsoft Word文档基操

news/2024/9/9 12:34:29

    以下是一个简单的示例,演示如何使用C++ QT读写Microsoft Word文档:

     
    #include <QAxObject>
    #include <QDebug>

    void readWordDocument(QString filePath)
    {
        QAxObject* word = new QAxObject("Word.Application", 0);
        word->setProperty("Visible", false);

        QAxObject* documents = word->querySubObject("Documents");
        QAxObject* document = documents->querySubObject("Open(const QString&)", filePath);

        QAxObject* paragraphs = document->querySubObject("Paragraphs");
        int count = paragraphs->property("Count").toInt();

        for (int i = 1; i <= count; i++)
        {
            QAxObject* paragraph = paragraphs->querySubObject("Item(int)", i);
            QString text = paragraph->property("Range").toString();
            qDebug() << text;
        }

        document->dynamicCall("Close()");
        word->dynamicCall("Quit()");
    }

    void writeWordDocument(QString filePath)
    {
        QAxObject* word = new QAxObject("Word.Application", 0);
        word->setProperty("Visible", false);

        QAxObject* documents = word->querySubObject("Documents");
        QAxObject* document = documents->querySubObject("Add()");

        QAxObject* range = document->querySubObject("Range()");
        range->dynamicCall("InsertAfter(QString)", "Hello, World!");

        document->dynamicCall("SaveAs(const QString&)", filePath);
        document->dynamicCall("Close()");
        word->dynamicCall("Quit()");
    }

    int main(int argc, char *argv[])
    {
        QString filePath = "C:/test.docx";

        // 读取Word文档
        readWordDocument(filePath);

        // 写入Word文档
        writeWordDocument(filePath);

        return 0;
    }
     

    在这个示例中,我们使用了`QAxObject`类来与Microsoft Word进行交互。`QAxObject`是QT中的一个ActiveX控件,可以用来与Windows应用程序进行交互。

    在`readWordDocument`函数中,我们打开了一个Word文档,遍历了文档中的所有段落,并打印了每个段落的文本内容。

    在`writeWordDocument`函数中,我们创建了一个新的Word文档,向其中插入了一段文本,并保存了文档。

    请注意,为了运行这个示例,您需要在QT项目中添加以下行:

     
    QT += axcontainer
     

    这将使QT包含ActiveX控件支持。


https://www.xjx100.cn/news/663762.html

相关文章

如何高质量产出与进步

个人困惑 明明有很多时间&#xff0c;却感觉没有事做。明明有很多事做&#xff0c;却不知道从哪里做起。明明知道某个事很重要&#xff0c;却一直无法开始。眼前有好几件事&#xff0c;却无法推进。本来想好要做的事&#xff0c;中途坚持不下去了。 背后根因思考 直接原因是…

VTK学习之光照和相机

目录 一、VTK光照 1、关于vtkLight常用的方法 2、最终效果 二、相机设置 1、相机设置 2、效果 一、VTK光照 通过设置光照&#xff0c;可以达到不同颜色的目的&#xff0c;参考博客&#xff1a; VTK修炼之道7_三维场景基本要素:光照_vtk 光照_沈子恒的博客-CSDN博客 1…

珂朵莉树ODT(基于std::set的暴力玄学数据结构)

使一整段区间内的东西变得一样&#xff0c;数据随机。 在具有区间赋值操作&#xff0c;区间统计操作&#xff0c;以及最好保证数据随机的情况下在时空复杂度上把线段树吊起来打。 珂朵莉树的各种操作的总体复杂度始终为O(NlogN)&#xff0c;这会吊打某些常数大、附加工作会影…

DDR中的ODT

ODT电阻端接 ODT (on-die termination) 裸片终端&#xff08;ODT&#xff09;功能允许DRAM通过ODT控制引脚为x4 / x8配置的每个DQ&#xff0c;DQS / DQS&#xff0c;RDQS / RDQS和DM信号打开/关闭终端电阻。对于x16配置&#xff0c;ODT通过ODT控制引脚应用于每个DQ&#xff0…

java解析.odt文件

1、了解.odt文件 .odt文件是openoffice软件产生的文档格式&#xff0c;可以直接用office打开&#xff0c;这其实就是一个压缩包&#xff0c;可以使用解压软件打开&#xff0c;里面有一个content.xml文件&#xff0c;这个文件内有<text:p>标签&#xff0c;标签内就是展示出…

DDR中的一些知识点说明(ODT,ZQ校准,OCT,TDQS)

ODT ( On-DieTermination ,片内终结)ODT 也是 DDR2 相对于 DDR1 的关键技术突破,所谓的终结(端接),就是让信号被电路的终端吸 收掉,而不会在电路上形成反射, 造成对后面信号的影响。 顾名思义, ODT 就是将端接电阻移植 到了芯片内部,主板上不再有端接电路。在进入DD…

DDR3系列-ODT-差分电容-容性补偿

DDR3 之 ODT ODT 是 On Die Termination 的缩写&#xff0c;又叫片内端接&#xff0c;顾名思义&#xff0c;就是将外部端接电阻放在了芯片内部&#xff0c;这个功能只有在 DDR2 以上的数据信号才有&#xff0c;DDR没有ODT。 有了这个功能&#xff0c;原本需要在 PCB 板上加串阻…

JESD79-4 第5章 片上终结电阻ODT(5.1-5.3)

DDR4 SDRAM支持ODT功能&#xff0c;此功能可通过ODT引脚控制、写命令或模式寄存器设置默认阻值来调整x4与x8设备的DQ, DQS_t, DQS_c与DM_n信号的终结电阻&#xff0c;x8设备除了上述引脚还可通过MR1.A111调整TDQS_t, TDQS_c的终结电阻。对于x16设备&#xff0c;ODT功能适用于D…