上一篇文章主要讲了从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文件 ...
随机推荐
-
JS函数的上下文环境
var i=1; var fn1=function(){ console.log(i); } var fn2=function(){ var i=2; fn1(); } fn2(); // ...
-
js工具类大全
/********** 日期处理函数 *********/<script type="text/javascript" src="${springMacroRequ ...
-
Swift 3.0 的 open,public,internal,fileprivate,private 关键字
import Foundation /// final的含义保持不变 public final class FinalClass { } // 这个类在ModuleA的范围外是不能被继承的 ...
-
详解ES6中的 let 和const
前 言 JRedu ECMAScript 6 是 JavaScript 语言教程,全面介绍 ECMAScript 6 新引入的语法特性. ES6 与上一个版本 ES5 的所有不同之处,对涉及的语 ...
-
使用crypto-js对数据进行AES加密、解密
前段时间做项目有用到数据加密,前端加密,后端解密(前端也可以解密),话不多说进入正题: 第一步: npm i crypto-js -S 第二步: 在需要加密或解密的地方引入crypto-js: imp ...
-
Automatic Text Difficulty Classifier Assisting the Selection Of Adequate Reading Materials For European Portuguese Teaching --paper
the system uses existing Natural Language Processing (NLP) tools, a parser and an hyphenator, and tw ...
-
CSS图片下面产生间隙的6种解决方案
CSS图片下面产生间隙的6种解决方案 在进行页面的DIV+CSS排版时,遇到IE6(当然有时Firefox下也会偶遇)浏览器中的图片元素img下出现多余空白的问题绝对是常见的对於 该问题的解决方法也是 ...
-
python selenium操作表格式元素实例
很多时候,网页上的布局都是表格形式的,如出下面这样的 这种网页类型在自动化中比较头痛,需要很多判断,下面就举个例子,这里以深圳出入境网页为例,http://yysl.sz3e.com/wsyysq/s ...
-
【TortoiseSVN】windows中连接SVN服务器的工具
1.下载安装包: 可以到我的服务器地址进行下载,有32和64位的安装包: http://qiaoliqiang.cn/fileDown/TortoiseSVN-1.8.8.25755-win32-sv ...
-
redis编译
简介: Redis是Nosql中比较出名的,分布式数据库缓存,提升相应的速度,降低对数据库的访问! Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,(永久 ...