从一个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文件 ...
随机推荐
- TCP/IP协议栈 --- IP路由
IP路由:当一个IP包在主机发送出去或者在网络当中时,是怎么选择路径到达目的主机的呢? 一般情况下, 如果说源主机和目的主机在同一个网络中的话,那个数据报可以直接到达目的主机而不经过路由器,下面可以试 ...
- 备忘录模式(Memento)
备忘录模式(Memento) 主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象,个人觉得叫备份模式更形象些,通俗的讲下:假设有原始类A,A中有各种属性,A可以决定需要备份的属性,备忘录类B是 ...
- ##4.Glance 镜像服务-- openstack pike
##4.Glance 镜像服务 openstack pike 安装 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ##.Glance 镜像服务.txt ...
- apache编译安装 httpd 2.2 httpd 2.4
#apache编译安装#httpd 2.2 , httpd 2.4 #!/bin/sh #apache编译安装 #httpd 2.2 , httpd 2.4 #centos #rpm -e httpd ...
- Django学习(2)数据宝库
数据库是一所大宝库,藏着各种宝贝.一个没有数据库的网站,功能有限.在Django中,支持的数据库有以下四种: SQLite3 MySQL PostgreSQL Oracle 其中SQLite3为Dja ...
- JAVA8新特性(一)
default拓展方法 java8为接口声明添加非抽象方法的实现,也成为拓展方法. public interface Formula { void doSomething(); default voi ...
- 开源API测试工具 Hitchhiker v0.6更新 - 改进压力测试
Hitchhiker 是一款开源的支持多人协作的 Restful Api 测试工具,支持Schedule, 数据对比,压力测试,支持上传脚本定制请求,可以轻松部署到本地,和你的team成员一起协作测试 ...
- python re 正则匹配 split sub
import re 编译: motif='([ST])Q' seq="SQAAAATQ" regrex=re.compile(motif) #编译成正则对象 regrex=re.c ...
- pl/sql中if的用法
/*判断用户从键盘输入的数字1.如何使用if语句2.接收一个键盘输入(字符串)*/set serveroutput on--接收一个键盘输入--num:一个地址值:含义:在该地址上保存了输入的值acc ...
- 经验总结22--抓取HTML数据,HtmlAgilityPack(续)
假设获取的数据是HTML的话.我们就须要第三方工具有辅助获取我们须要的数据. 我选用了HtmlAgilityPack这么个工具. 首先肯定去网上下载一个,然后引用到项目中.下载地址:http://ht ...