上一篇文章主要讲了从word底层xml中获取表格和标题的方法,但是存在一个问题:word文件必须是docx格式的。如果为doc格式的,可以有两种解决方案:

一、把doc文件转换成docx格式文件,用上一种办法来处理

二、利用com组件和word的标签机制去处理

下面直接贴代码:

1)获取表格数据

 void MyWord::getTableData( const int index, QVector<QVector<QString> > &vec )
{
m_word = new QAxObject(parent);
if(!m_word->setControl("Word.Application"))
{
QMessageBox::warning(, tr("警告"), tr("绑定word控件失败"), tr("确定"));
return ;
}
m_word->setProperty("Visible", false); //设置窗体不可见
m_word->setProperty("DisplayAlerts", false); //不现实警告信息 m_documents = m_word->querySubObject("Documents");
m_documents->dynamicCall("Open(const QString &)", filename); //打开文件
m_document = m_word->querySubObject("ActiveDocument"); //获取当前被激活的文档 QAxObject *table = m_document->querySubObject("Tables(int)", index); //获取表格
if(!table)
{
return ;
}
int rowCnt = table->querySubObject("Rows")->property("Count").toInt(); //行数
int colCnt = table->querySubObject("Columns")->property("Count").toInt(); //列数
for(int nR = ; nR <= rowCnt; ++nR)
{
QVector<QString> tmpVec;
for(int nC = ; nC <= colCnt; ++nC)
{
QAxObject *cell = table->querySubObject("Cell(int, int)", nR, nC);//每一个单元格
if(!cell)
{
tmpVec.push_back("");
continue;
}
QString text = cell->querySubObject("Range")->property("Text").toString();//获取单元格文本
tmpVec.push_back(text.remove(text.size() - , ));//去除文本的换行符
}
vec.push_back(tmpVec);
}
}

2)读取标签相关区域文本

QString MyWord::getTextFromBookmark( const int index /*= 1*/ )
{
if(index < || index > getBookmarkCount() && !m_document)
{
return "";
} QAxObject *bookmark = m_document->querySubObject("Bookmarks(int)", index);
if(bookmark)
{
QAxObject *range = bookmark->querySubObject("Range");
if(range)
{
return range->property("Text").toString();
}
}
return "";
} QString MyWord::getTextFromBookmark( const QString &bookmarkName )
{
if(!m_document)
{
return "";
} QAxObject *bookmark = m_document->querySubObject("Bookmarks(const QString &)", bookmarkName);
if(bookmark)
{
QAxObject *range = bookmark->querySubObject("Range");
if(range)
{
return range->property("Text").toString();
}
}
return "";
}

3)如何插入标签

选中要插如标签的文本,word插入->标签,按照提示操作即可

从一个word文件中读取所有的表格和标题(2)的更多相关文章

  1. 从一个word文件中读取所有的表格和标题(1)

    首先讲需求: 从word文件中读表格里的数据,然后插入数据库中.word文件中的表格是带有标题的,把标题读出来,进行匹配数据库. 需求分析: word2007底层是以xml文件存储的,所以分析xml的 ...

  2. 编写Java程序,在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字“[ 来自新华社 ]”,保存到一个新的 txt 文件内

    查看本章节 查看作业目录 需求说明: 在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字"[ 来自新华社 ]",保存到一个新的 txt 文件内 实现思路: 创建 Sa ...

  3. 条形码的应用三-----------从Excel文件中读取条形码

    条形码的应用三------从Excel文件中读取条形码 介绍 上一篇文章,我向大家展示了生成多个条形码并存储到Excel文件中的一个方法.后来我又有了个想法:既然条码插入到excel中了,我可不可以从 ...

  4. 【jacob word】使用jacob,合并多个word为一个word文件

    将几个word文件合并到一个word文件,使用注意点: 1.后面附项目运用的jar包jacob-1.9, 2.并且jacob运用中,需要将附件内的jacob.dll放到windows/system32 ...

  5. java:利用java的输入/输出流将一个文件的每一行+行号复制到一个新文件中去

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

  6. Java将对象保存到文件中/从文件中读取对象

    1.保存对象到文件中 Java语言只能将实现了Serializable接口的类的对象保存到文件中,利用如下方法即可: public static void writeObjectToFile(Obje ...

  7. 从PCD文件中读取点云数据

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=84 在本小节我们学习如何从PCD文件中读取点云数据. 代码 章例1文件夹中, ...

  8. 【Python】从文件中读取数据

    从文件中读取数据 1.1 读取整个文件 要读取文件,需要一个包含几行文本的文件(文件PI_DESC.txt与file_reader.py在同一目录下) PI_DESC.txt 3.1415926535 ...

  9. Python自动化测试框架——数据驱动(从文件中读取)

    学过编程的伙伴们都知道,数据不仅可以从代码中读取,还可以从文件中读取. 今天小编就简要的介绍一下从文件中读取数据,并应用到自动化测试中方法. 先来展示下接下来将要用到的文件在项目中的结构 从txt文件 ...

随机推荐

  1. #centos7 创建内网yum源 OpenStack源部署

    #centos7 创建内网yum源#centos7 自动化安装 本地 内网 web源创建.更新 createrepo http OpenStack源部署 Elven原创 http://www.cnbl ...

  2. 矩阵取数游戏洛谷p1005

    题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2. ...

  3. RGBA 和 opacity的区别

    两者都可以设置透明度 区别 RGBA 只影响当前元素 opacity 后代会继承该css 值,暂时还没有办法清除该css 在线演示

  4. caioj 1236 最近公共祖先 树倍增算法模版 倍增

    [题目链接:http://caioj.cn/problem.php?id=1236][40eebe4d] 代码:(时间复杂度:nlogn) #include <iostream> #inc ...

  5. 使用Jenkins自动部署博客

    title: 使用Jenkins自动部署博客 toc: true comment: true date: 2017-12-17 19:48:10 tags: ['Jenkins', 'CI'] cat ...

  6. 自己手写WEB程序框架并执行

    1.新建目录,起名MyWeb 2.目录下,新建两个目录 WEB-INF, META-INF,,还能够新建一些jsp,html文件 ,如 index.html 3在WEB-INF中必须存在一个文件WEB ...

  7. jmeter的使用---web测试

    jmeter的使用---web测试 url:http://127.0.0.1:1080/WebTours/ 1.通过badboy录制脚本 1.1输入url点击右侧的跳转按钮,随后右侧显示url界面 1 ...

  8. AspNet Core Api Restful +Swagger 实现微服务之旅(四)

    这几天没更新,项目框架也是在发展阶段,这几天学习配置了一遍Apollo和RabbitMQ 等到放到框架上之后我整理一下到时候把心得写出来相互学习. 接着上一篇的内容 (2)  程序错误时  返回数据格 ...

  9. Android中build target,minSdkVersion,targetSdkVersion,maxSdkVersion概念区分

    问题引入:   有一个下载功能,在Android 5.x设备上运行正常,Android 6.x上运行异常,现象是下载进度卡在0%.   问题排查发现,是sdk的target设置为23导致,修改为21则 ...

  10. python自动化--字符串和整数的转换,while的循环体

    字符串(str)和整数(int)类型变量的结合 *遵循只有同一类型的变量才可以结合. *不同类型的变量之间的转换 实例:实现打印出"192.168.100"和1的结合出" ...