从一个word文件中读取所有的表格和标题(2)
上一篇文章主要讲了从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)的更多相关文章
- 从一个word文件中读取所有的表格和标题(1)
首先讲需求: 从word文件中读表格里的数据,然后插入数据库中.word文件中的表格是带有标题的,把标题读出来,进行匹配数据库. 需求分析: word2007底层是以xml文件存储的,所以分析xml的 ...
- 编写Java程序,在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字“[ 来自新华社 ]”,保存到一个新的 txt 文件内
查看本章节 查看作业目录 需求说明: 在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字"[ 来自新华社 ]",保存到一个新的 txt 文件内 实现思路: 创建 Sa ...
- 条形码的应用三-----------从Excel文件中读取条形码
条形码的应用三------从Excel文件中读取条形码 介绍 上一篇文章,我向大家展示了生成多个条形码并存储到Excel文件中的一个方法.后来我又有了个想法:既然条码插入到excel中了,我可不可以从 ...
- 【jacob word】使用jacob,合并多个word为一个word文件
将几个word文件合并到一个word文件,使用注意点: 1.后面附项目运用的jar包jacob-1.9, 2.并且jacob运用中,需要将附件内的jacob.dll放到windows/system32 ...
- java:利用java的输入/输出流将一个文件的每一行+行号复制到一个新文件中去
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- Java将对象保存到文件中/从文件中读取对象
1.保存对象到文件中 Java语言只能将实现了Serializable接口的类的对象保存到文件中,利用如下方法即可: public static void writeObjectToFile(Obje ...
- 从PCD文件中读取点云数据
博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=84 在本小节我们学习如何从PCD文件中读取点云数据. 代码 章例1文件夹中, ...
- 【Python】从文件中读取数据
从文件中读取数据 1.1 读取整个文件 要读取文件,需要一个包含几行文本的文件(文件PI_DESC.txt与file_reader.py在同一目录下) PI_DESC.txt 3.1415926535 ...
- Python自动化测试框架——数据驱动(从文件中读取)
学过编程的伙伴们都知道,数据不仅可以从代码中读取,还可以从文件中读取. 今天小编就简要的介绍一下从文件中读取数据,并应用到自动化测试中方法. 先来展示下接下来将要用到的文件在项目中的结构 从txt文件 ...
随机推荐
- 如何滚动更新 Service?- 每天5分钟玩转 Docker 容器技术(102)
在前面的实验中,我们部署了多个副本的服务,本节将讨论如何滚动更新每一个副本. 滚动更新降低了应用更新的风险,如果某个副本更新失败,整个更新将暂停,其他副本则可以继续提供服务.同时,在更新的过程中,总是 ...
- js限制日期选择范围是两个月
$(".dateInputClass input:eq(0)").bind("click", function(){WdatePicker({dateFmt:' ...
- mysql主从复制笔记
一:测试环境介绍 主从复制测试环境是ubuntu+mysql5.7,master服务器ip是192.168.71.135,slave服务器ip是192.168.71.137,ubuntu环境是从一台已 ...
- HTTP 2 新特性
HTTP 2 新特性 HTTP/2 不是彻底的重写http协议,HTTP methods,status codes 和 语义化都是相同的,并且它应该使用和HTTP/1.x 相同的api 表示协议. H ...
- 实践作业2:黑盒测试实践——搭建被测web系统Day 4
1.选择合适的待测web系统 2.安装web系统运行所需工具,配置运行环境 3.成功运行web系统 4.尝试Katalon测试系统
- CCF-201403-3-命令行选项
问题描述 试题编号: 201403-3 试题名称: 命令行选项 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些选项.每 ...
- jquery 循环数组输出显示在html页面
jquery 没有双向数据绑定,但是很多需求确实需要我们从后台接收到数组或者对象循环显示在前台页面上,这时我们可以用字符串拼接,元素添加的方法去实现 js部分如下: $(function(){ var ...
- 移动GIS未来的前景GIS解决方案应用
目前,在我国一些发达地区,移动GIS所需的两个技术前提——移动互联网的普及和智能终端的普及都已经得到了满足,特别是平板电脑.智能手机的流行,苹果产品的风靡,为移动GIS的应用提供了肥沃的土壤,而GIS ...
- 大白话Vue源码系列(01):万事开头难
阅读目录 Vue 的源码目录结构 预备知识 先捡软的捏 Angular 是 Google 亲儿子,React 是 Facebook 小正太,那咱为啥偏偏选择了 Vue 下手,一句话,Vue 是咱见过的 ...
- windows环境Caffe安装配置步骤(无GPU)及mnist训练
在硕士第二年,义无反顾地投身到了深度学习的浪潮中.从之前的惯性导航转到这个方向,一切从头开始,在此,仅以此文记录自己的打怪之路. 最初的想法是动手熟悉Caffe,考虑到直接上手Ubuntu会有些难度, ...