环保公司网站模版,使用织梦系统建设网站教程,网站建设与制作教案,少儿编程证书含金量排名操作步骤步骤一#xff1a;引用相关POI库步骤二#xff1a;创建POI中的word文件对象步骤三#xff1a;调用word文件对象的方法对文件进行操作步骤一#xff1a;引用相关的POI库吐槽一下#xff0c;这一步是最坑的本人尝试了很多版本组合#xff0c;最新的版本提示class重…操作步骤步骤一引用相关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.14implementation org.apache.poi:poi-excelant:3.14implementation org.apache.poi:poi-examples:3.14implementation org.apache.xmlbeans:xmlbeans:2.6.0类重复导入错误错误引用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.17implementation group: org.apache.xmlbeans, name: xmlbeans, version: 3.1.0implementation javax.xml.stream:stax-api:1.0implementation 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]文件后缀创建对象docHWPFDocumentdocxXWPFDocument由于doc是2003年的word版本此处暂时略过。主要使用docx进行作业步骤三文件操作操作类结构说明获取主要信息读取字段信息// 段落一般只文字内容,图片表格等其他字符会作为空字符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方法并传入想要显示的宽和高。直接传入宽和高无法显示效果图测试过程原始文档输出文档