android 控制word,Android使用POI进行Word操作(一)

操作步骤

步骤一:引用相关POI库

步骤二:创建POI中的word文件对象

步骤三:调用word文件对象的方法对文件进行操作

步骤一:引用相关的POI库

吐槽一下,这一步是最坑的

本人尝试了很多版本组合,最新的版本提示class重复引用。老的版本又有存在图片插入后损坏文件。本人把能用的放在后面

加载方式

效果

通过gradle引用3.14poi

使用javatest能够通过,但在编译apk时提示重复类

加载最新的5.1poi包

提示无法找到一些java类

加载3.8的poi包及java包

添加图片时,导致docx文件异常

通过gradle混合加载版本

能够使用

错误引用1-生成app提示类重复

implementation 'org.apache.poi:poi-ooxml:3.14'

implementation 'org.apache.poi:poi-excelant:3.14'

implementation 'org.apache.poi:poi-examples:3.14'

implementation 'org.apache.xmlbeans:xmlbeans:2.6.0'

97a92153f0db

类重复导入错误

错误引用2-添加图片时doc错误

目前采用直接加载jar包的方式,引用库加载文件如下:

implementation files('libs/poi-3.8-20120326.jar')

implementation files('libs/poi-ooxml-3.8-20120326.jar')

implementation files('libs/poi-ooxml-schemas-3.8-20120326.jar')

implementation files('libs/xmlbeans-2.3.0.jar')

implementation files('libs/commons-logging-1.1.jar')

implementation files('libs/dom4j-1.6.1.jar')

implementation files('libs/stax-api-1.0.1.jar')

正确引用-混合版本加载

implementation group: 'org.apache.poi', name: 'poi-ooxml', version: '3.17'

implementation group: 'org.apache.xmlbeans', name: 'xmlbeans', version: '3.1.0'

implementation 'javax.xml.stream:stax-api:1.0'

implementation 'com.fasterxml:aalto-xml:1.2.2'

步骤二:创建POI对应的Document对象

首先区别你要加载的word后缀,是.doc还是.docx,因为这两个所创建的对象不一样,如果不对号入座则会报错

org.apache.poi.POIXMLException: org.apache.poi.openxml4j.exceptions.InvalidFormatException: Package should contain a content type part [M1.13]

文件后缀

创建对象

doc

HWPFDocument

docx

XWPFDocument

由于doc是2003年的word版本,此处暂时略过。主要使用docx进行作业

步骤三:文件操作

97a92153f0db

操作类结构说明

获取主要信息

读取字段信息

// 段落,一般只文字内容,图片表格等其他字符,会作为空字符

List paragraphs = doc.getParagraphs();

// 表格,整文档中的所有表格

List tables = doc.getTables();

// 图片,获取的都是byte[]

List allPictures = doc.getAllPictures();

// 页眉,只能获取不同内容的页眉

List headerList = doc.getHeaderList();

// 页脚,注意自动生成的编号不会被获取到,只能获取不同类型的页脚

List footerList = doc.getFooterList();

编辑文档内容(覆盖和添加)

注意使用POI的修改操作比较繁琐,建议直接准备一个空文件进行填充

编辑和修改都最好不要对源文件进行修改,而是在修改后通过一个输出流程,将修改后的文件输出

默认所有的操作,最后都有调用 doc.write(out);

(一) 文字修改

操作步骤

遍历所有的XWPFParagraph,并查找其中是否有自己需要修改的内容

遍历该XWPFParagraph中的XWPFRun,调用toString()方法查看是否为需要修改的内容

使用run.setText("修改内容", 0)方法修改

List paragraphs = doc.getParagraphs();

for (int i = 0; i < paragraphs.size(); i++) {

XWPFParagraph para = paragraphs.get(i);

String text = para.getText();

if (!TextUtils.isEmpty(text)) {

index = text.indexOf(GOAL);

if (index != -1) {

List runs = para.getRuns();

for (XWPFRun run : runs) {

if (run.toString().equals("GOAL")) {

run.setText("修改内容", 0);

}

}

}

}

}

注意:

一定要添加第二个参数0,否则会变成插入操作

需要查找的内容不要增加特殊符号,特殊符号会被识别为单独的XWPFRun对象

(二) 表格修改

操作步骤

确定需要处理的表格是第几个

根据确定需要编辑的数据在第几行,第几列后,通过XWPFTable->XWPFTableRow->CTRow->XWPFTableCell

在获取到XWPFTableCell后调用

//表格

List tables = doc.getTables();

XWPFTable table = tables.get(0);

table.getRow(0).getCell(1).setText("LJJ");

table.getRow(1).getCell(1).setText("29");

table.getRow(2).getCell(1).setText("地球");

注意:

若担心异常退出,可以做一些长度限制,通过table.getRows();,然后每一行的row.getCtRow()sizeOfTcArray();判断列数

(三) 图片插入

此处默认在最后插入图片,插入图片的方式是通过输入流的方式插入

XWPFRun run = doc.createParagraph().createRun();

FileInputStream picIn = new FileInputStream(new File(picPath));

run.addPicture(picIn, XWPFDocument.PICTURE_TYPE_PNG, "插入图片", Units.toEMU(256), Units.toEMU(256));

FileUtils.close(picIn);

注意:

插入图片打开word出现错误,则需要升级poi版本。目前可以使用的我已经上传在最上面的下载地址了

插入图片的宽和高,一定要使用Units.toEMU方法,并传入想要显示的宽和高。直接传入宽和高无法显示

效果图

97a92153f0db

测试过程

97a92153f0db

原始文档

97a92153f0db

输出文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android car bt模块,大谷蓝牙小车BT Car/Android Car手机控制 重力控制小车 安卓操控小车...

产品介绍&#xff1a;Android蓝牙遥控小车平台。是通过Android手机以蓝牙方式操控小车前进后退左转右转等&#xff0c;具有重力感应操控、触摸屏虚拟操控、虚拟摇杆三种控制模式。并且还具有呼吸灯、电源指示灯、蓝牙连接指示灯、速度等级指示灯等状态指示。小车自带锂电池及US…

Dijkstra(迪杰斯特拉)算法总结

知识概览 Dijkstra算法适用于解决所有边权都是正数的最短路问题。Dijkstra算法分为朴素的Dijkstra算法和堆优化版的Dijkstra算法。朴素的Dijkstra算法时间复杂度为&#xff0c;适用于稠密图。堆优化版的Dijkstra算法时间复杂度为&#xff0c;适用于稀疏图。稠密图的边数m和是一…

html表格中怎么将背景颜色虚化,如何在Photoshop中制作效果惊艳模糊背景!

把背景模糊一下&#xff0c;有时&#xff0c;效果会令人非常惊艳&#xff0c;但是&#xff0c;你知道如何在Photoshop中模糊背景吗&#xff1f; 在今天的教程中&#xff0c;我们将告诉大家&#xff0c;如何使背景模糊&#xff0c;而又不会使我们的主体周围出现光晕。在这个过程…

axure html 360安装扩展,小编搞定win7系统360浏览器添加Axure扩展的设置方案

经常使用电脑的朋友会发现win7系统360浏览器添加Axure扩展的问题比较常见&#xff0c;如今就有用户反映在使用电脑的时候遇到win7系统360浏览器添加Axure扩展的情况不知怎么解决&#xff0c;于是我就给大家整理总结了win7系统360浏览器添加Axure扩展的具体处理方案&#xff0c;…

前锋html5费用,足坛转会费最高的5位前锋,1.05亿欧元仅第5,第1比C罗还高1.22亿...

原标题&#xff1a;足坛转会费最高的5位前锋&#xff0c;1.05亿欧元仅第5&#xff0c;第1比C罗还高1.22亿大家都知道&#xff0c;前锋对于比赛的胜负非常重要&#xff0c;再加上其关注度比其他位置高&#xff0c;商业价值比较高&#xff0c;所以通常来说&#xff0c;他们的转会…

学计算机高中要买电脑,大一新生,打着学习的“口号”要求买电脑,父母到底该不该答应?...

原标题&#xff1a;大一新生&#xff0c;打着学习的“口号”要求买电脑&#xff0c;父母到底该不该答应&#xff1f;马上就进入9月份了&#xff0c;全国各大高校也都陆续开学。对于刚刚考上大学的大一新生来说&#xff0c;学校的一切都是很新鲜的&#xff0c;而且他们也不用像在…

计算机科学人生观和价值观,浅谈我的人生观和价值观

浅谈我的人生观和价值观2013-04-22 13:58:30 来源&#xff1a;http://www.51cok.com/ 点击:176次分享到&#xff1a;人们经常说态度决定一切&#xff0c;这就是指的人们的人生观和价值观。我们在高中学习政治哲学时开始真正地从理论上学习这一对词语&#xff0c;也是从…

添加include文件路径_-isystem以及include_next的副作用

首先我们先来看下include_next的用法比如我们想include , 在cmath头文件中你可以看到有类似include_next 的语法&#xff0c;他跟传统的include不同&#xff0c;他不会从你的search path list的头部开始查找&#xff0c;他会跳出当前路径从下一个entry进行查找&#xff0c;比如…

java防止上传恶意文件_从补丁分析到在野利用:揭秘CVE20201464 Windows文件签名验证绕过漏洞疑云...

背景2020年8月12日&#xff0c;微软发布了8月份的漏洞风险通告。通告中一个显示已被公开披露和在野利用的漏洞进入了我们的视野。该漏洞编号为CVE-2020-1464&#xff0c;其被描述为Windows验证文件数字签名时存在一个欺骗漏洞&#xff0c;攻击者若成功利用此漏洞可以绕过Window…

特殊教育学校计算机教学计划,2021年特殊教育学校教学计划

2021年特殊教育学校教学计划时间真是转瞬即逝&#xff0c;我们又将在努力中收获成长&#xff0c;现在就让我们好好地规划一下吧。那么教学计划怎么写才能体现你的真正价值呢&#xff1f;下面是小编精心整理的2021年特殊教育学校教学计划&#xff0c;希望能够帮助到大家。特殊教…

android 双层饼图_python:给表格加上双层饼图,让同事的图表黯然失色

大家好&#xff01;今天来分享一下如何用python给表格加上双层饼图&#xff0c;让同事的图表黯然失色&#xff0c;如下图所示。案例中数据表格结构如下&#xff1a;代码及演示&#xff1a;import pyecharts.options as opts from pyecharts.charts import Pie import numpy as …

计算机一级电子表格插入表格,计算机一级电子表格

电子表格一、(1)在考生文件夹下打开EXC.XLSX文件&#xff1a;①将sheet1工作表的A1&#xff1a;E1单元格合并为一个单元格&#xff0c;水平对齐方式设置为居中&#xff1b;计算各单位三种奖项的合计&#xff0c;将工作表命名为"各单位获奖情况表"。②选取"各单位…

18年高考云南628分想学计算机,2018山东高考投档线公布!山大文624理628…快查查你学校多少分进档...

原标题&#xff1a;2018山东高考投档线公布&#xff01;山大文624理628…快查查你学校多少分进档考生注意&#xff01;↓↓↓山东省2018年普通高校招生文理类本科普通批、春季高考本科、艺术类本科校考批首次志愿于7月19日投档&#xff01;具体来看&#xff0c;文理类本科普通批…

android fragment中引入自定义view_厉害了,用Android自定义View实现八大行星绕太阳3D旋转效果...

作者&#xff1a;史蒂芬诺夫斯基链接&#xff1a;https://www.jianshu.com/p/2954f2ef8ea5好久没写View了&#xff0c;最近恰巧遇到一个八大行星绕太阳旋转的假3D效果&#xff0c;写完之后感觉效果还不错。能玩十分钟的那种。本篇将一步步带您实现这样的一个效果&#xff0c;ps…

计算机消失了一个磁盘,win7系统重装后莫名奇妙消失一个分区磁盘的解决方法...

很多小伙伴都遇到过win7系统重装后莫名奇妙消失一个分区磁盘的困惑吧&#xff0c;一些朋友看过网上零散的win7系统重装后莫名奇妙消失一个分区磁盘的处理方法&#xff0c;并没有完完全全明白win7系统重装后莫名奇妙消失一个分区磁盘是如何解决的&#xff0c;今天小编准备了简单…

icloud无法验证服务器,iPhone提示“验证失败 连接到icloud时出错”怎么解决?

有不少使用苹果设备的朋友们在设备屏幕上面&#xff0c;可能会遇到了“验证失败 连接到icloud时出错”提示&#xff0c;不知道这是什么原因&#xff0c;如何解决。下面我就来谈谈出现这种现象的原因与解决办法。提示&#xff1a;“验证失败 连接到icloud时出错”&#xff0c;是…

esim办理出现差错_经营二氧化碳如何办理危化证?快来看!

点击关注我的气体网&#xff0c;置顶公众号行业资讯丨供求商机丨企业动态丨企业推荐更多信息和资源一网打尽━━━━━━安全复工二氧化碳相信大家都不陌生&#xff0c;我们平常一呼一吸间&#xff0c;呼出来的气体就是二氧化碳。还有我们平常喝的碳酸饮料&#xff0c;里边充入…

文件服务器有病毒,服务器共享文件会被病毒加密吗

前段时间纷纷扬扬的勒索病毒&#xff0c;让很多计算机用户害怕&#xff0c;就怕自己的共享文件被病毒加密而丢失&#xff0c;那么&#xff0c;服务器共享文件会被病毒加密吗&#xff1f;哪种网络条件下共享文件不易传播病毒呢&#xff1f;今天我们就跟随佰佰安全网一起来了解关…

swing快速入门(二十七)

注释很详细&#xff0c;直接上代码 上一篇 新增内容 1.为按钮指定图标 2. 列表框的并列 3.菜单项绑定快捷键 4.控件悬浮提示信息 5.菜单项设置小图标 6.五种布局风格右键选择切换 package swing21_30;import javax.swing.*; import java.awt.*; import java.awt.event.…

k8s pod里访问不到外部ip_K8S容器网络如何实现通信?

Kubernetes&#xff08;简称K8S&#xff09;正迅速成为云计算中部署和管理软件的新标准&#xff0c;那么K8S的容器网络是如何通信的呢&#xff1f;在了解容器网络通信原理之前&#xff0c;我们先学习下K8S中主要组件的定义&#xff0c;包括&#xff1a;节点(Node)、容器、POD、…