word导入导出-Apache POI 和 Poi-tl

2023-12-23 07:36
文章标签 导出 导入 apache word tl poi

本文主要是介绍word导入导出-Apache POI 和 Poi-tl,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

word 文件读取

使用Apache POI Word 进行读取文件
使用poi 时如果报ClassNotFoundException 等错误,请注意请求以下maven 文件的版本
Apache POI Word 说明文档:Apache POI Word 说明文档

maven 解决依赖冲突教程:https://www.cnblogs.com/shangxiaofei/p/17662176.html

1:导包

 <!--poi--><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.2</version></dependency><!--读取doc文件--><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>5.2.2</version></dependency>

2:读取doc和docx文件的工具类

package com.wkl.testdemo.word;import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.List;/*** 读取word工具类*/
public class ReadWordUtil {public static String readWord(InputStream inputStream, String suffix) throws Exception{String buffer = "";try {if ("doc".equals(suffix)) {HWPFDocument document = new HWPFDocument(inputStream);WordExtractor extractor = new WordExtractor(document);buffer = extractor.getText();String[] paragraphText = extractor.getParagraphText();//解析段落for (String s : paragraphText) {System.out.println(s);}extractor.close();document.close();} else if ("docx".equals(suffix)) {XWPFDocument doc = new XWPFDocument(inputStream);XWPFWordExtractor extractor = new XWPFWordExtractor(doc);buffer = extractor.getText();//解析段落List<XWPFParagraph> paragraphs = doc.getParagraphs();for (XWPFParagraph paragraph : paragraphs) {String text1 = paragraph.getText();System.out.println(text1);}extractor.close();doc.close();}return buffer;} catch (Exception e) {throw e;}}public static void main(String[] args) throws Exception {String pathdocx = "C:\\Users\\wenge\\Desktop\\新建 DOCX 文档.docx";readWord(new FileInputStream(new File(pathdocx)),"docx");String pathdoc = "C:\\Users\\wenge\\Desktop\\新建 DOC 文档.doc";readWord(new FileInputStream(new File(pathdoc)),"doc");}
}

导出word文档-Poi-tl

1:Poi-tl介绍

poi-tl是一个基于Apache POI的Java库,用于操作Microsoft Office文档,包括Word文档(.docx)、Excel电子表格(.xlsx)和PowerPoint演示文稿(.pptx)。它提供了一组简单易用的API,使开发人员能够轻松地创建、读取和修改Office文档。

poi-tl的主要特点如下:

  • 简单易用:poi-tl提供了一组简单易用的API,使开发人员能够快速上手并进行Office文档的操作。它提供了丰富的方法和属性,以满足不同的需求。

  • 支持多种文档格式:poi-tl支持多种常见的Office文档格式,包括Word文档(.docx)、Excel电子表格(.xlsx)和PowerPoint演示文稿(.pptx)。开发人员可以使用poi-tl来创建、读取和修改这些文档。

  • 功能丰富:poi-tl提供了许多有用的功能,如创建和修改文档的样式、添加和删除文本、插入和删除图片、创建和修改表格、添加和删除行列等。它还支持合并单元格、设置字体样式和颜色、设置边框和背景颜色等高级功能。

  • 支持模板引擎:poi-tl支持使用模板引擎来生成Office文档。开发人员可以使用模板引擎来定义文档的结构和样式,并使用poi-tl来填充数据。这样可以实现文档的动态生成,使开发人员能够更灵活地生成各种类型的文档。

  • 支持国际化:poi-tl支持国际化,可以根据不同的语言和地区生成相应的文档。开发人员可以使用poi-tl提供的API来设置文档的语言、日期格式、货币格式等,以满足不同国家和地区的需求。

  • 开源免费:poi-tl是一个开源的Java库,使用Apache License 2.0许可证。这意味着开发人员可以免费使用和修改poi-tl,并将其用于商业和非商业项目。

综上所述,poi-tl是一个功能强大且易于使用的Java库,用于操作Microsoft Office文档。它提供了丰富的API和功能,使开发人员能够轻松地创建、读取和修改Office文档。无论是生成报告、导出数据还是进行数据分析,poi-tl都是一个理想的选择

2:Poi-tl和其他模板引擎对比

在这里插入图片描述
其中:
poi-tl官网地址:https://deepoove.com/poi-tl/
Apache POI Word 说明文档:Apache POI Word 说明文档

3:Poi-tl 功能列表

在这里插入图片描述

4:导包

看poi-tl 官网,有版本建议
在这里插入图片描述

        <!--poi word--><dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.0</version></dependency><!--poi--><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.2</version></dependency><!--读取doc文件--><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>5.2.2</version></dependency>

5:导出文件测试-helloworld

1:生成一个模板.docx
在这里插入图片描述

2:程序测试

package com.wkl.testdemo.word;import com.deepoove.poi.XWPFTemplate;import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;/*** @author wangkanglu* @version 1.0* @description* @date 2023-12-20 15:53*/
public class WriteWordUtil {public static void main(String[] args) {String path = "C:\\Users\\Desktop\\模板.docx";Map<String,String> data = new HashMap<>();data.put("title","标题1111");data.put("publishTime","2023-12-20 13:12:12");data.put("content","内容");try {toword(data,path,"C:\\Users\\Desktop\\模板1.docx");} catch (IOException e) {throw new RuntimeException(e);}}/*** 生成word工具类* @param datas 数据* @param filePath 模板地址* @param descpath 输出地址* @return 返回生成文件路径* @throws IOException*/public static String toword(Map datas, String filePath, String descpath) throws IOException {String outPath = descpath;XWPFTemplate template = XWPFTemplate.compile(filePath).render(datas);FileOutputStream out = new FileOutputStream(outPath);template.write(out);template.close();return descpath;}
}

3:结果:
在这里插入图片描述

6:复杂使用-增加文件批注


package com.wkl.testdemo.word;import java.io.IOException;
import java.util.Arrays;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;import org.apache.poi.util.LocaleUtil;import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.data.Documents;
import com.deepoove.poi.data.Documents.DocumentBuilder;
import com.deepoove.poi.data.ParagraphRenderData;
import com.deepoove.poi.data.Paragraphs;
import com.deepoove.poi.data.Pictures;
import com.deepoove.poi.data.TableRenderData;
import com.deepoove.poi.data.Tables;
import com.deepoove.poi.data.Texts;
import com.deepoove.poi.data.style.Style;
import com.deepoove.poi.plugin.comment.CommentRenderData;
import com.deepoove.poi.plugin.comment.CommentRenderPolicy;
import com.deepoove.poi.plugin.comment.Comments;
import com.deepoove.poi.plugin.comment.Comments.CommentBuilder;public class CommentRenderPolicyTest {public static void main(String[] args) {try {testCommentExample();} catch (IOException e) {throw new RuntimeException(e);}}public static void testCommentExample() throws IOException {// commentCommentRenderData comment0 = newCommentBuilder().addText(Texts.of("咏鹅").fontSize(20).bold().create()).comment(Documents.of().addParagraph(Paragraphs.of(Pictures.ofLocal("D:\\Pictures\\002KoyJzly1hix2zhdr2qj60sq0sq0uu02.jpg").create()).create()).create()).create();CommentRenderData comment1 = newCommentBuilder().addText("骆宾王").comment("骆宾王作为“初唐四杰”之一,对荡涤六朝文学颓波,革新初唐浮靡诗风。他一生著作颇丰,是一个才华横溢的诗人。").create();CommentRenderData comment2 = newCommentBuilder().addText("曲项").comment("弯着脖子").create();CommentRenderData comment3 = newCommentBuilder().addText("拨").comment("划动").create();// document DocumentBuilder documentBuilder = Documents.of().addParagraph(Paragraphs.of().addComment(comment0).center().create());documentBuilder.addParagraph(Paragraphs.of().addComment(comment1).center().create());documentBuilder.addParagraph(Paragraphs.of("鹅,鹅,鹅,").addComment(comment2).addText("向天歌。").center().create());documentBuilder.addParagraph(Paragraphs.of("白毛浮绿水,红掌").addComment(comment3).addText("清波。").center().create());// renderXWPFTemplate.create(documentBuilder.create(), Style.builder().buildFontFamily("微软雅黑").buildFontSize(14f).build()).writeToFile("C:\\Users\\Desktop\\增加批注.docx");}private static CommentBuilder newCommentBuilder() {return Comments.of().signature("Sayi", "s", LocaleUtil.getLocaleCalendar());}}

这篇关于word导入导出-Apache POI 和 Poi-tl的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/527220

相关文章

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个

Java利用poi实现word表格转excel

《Java利用poi实现word表格转excel》这篇文章主要为大家详细介绍了Java如何利用poi实现word表格转excel,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、每行对象类需要针对不同的表格进行对应的创建。package org.example.wordToEx

Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)

《Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)》:本文主要介绍Java导入、导出excel的相关资料,讲解了使用Java和ApachePOI库将数据导出为Excel文件,包括... 目录前言一、引入Apache POI依赖二、用法&步骤2.1 创建Excel的元素2.3 样式和字体2.

java导出pdf文件的详细实现方法

《java导出pdf文件的详细实现方法》:本文主要介绍java导出pdf文件的详细实现方法,包括制作模板、获取中文字体文件、实现后端服务以及前端发起请求并生成下载链接,需要的朋友可以参考下... 目录使用注意点包含内容1、制作pdf模板2、获取pdf导出中文需要的文件3、实现4、前端发起请求并生成下载链接使

Python如何在Word中生成多种不同类型的图表

《Python如何在Word中生成多种不同类型的图表》Word文档中插入图表不仅能直观呈现数据,还能提升文档的可读性和专业性,本文将介绍如何使用Python在Word文档中创建和自定义各种图表,需要的... 目录在Word中创建柱形图在Word中创建条形图在Word中创建折线图在Word中创建饼图在Word

Python批量调整Word文档中的字体、段落间距及格式

《Python批量调整Word文档中的字体、段落间距及格式》这篇文章主要为大家详细介绍了如何使用Python的docx库来批量处理Word文档,包括设置首行缩进、字体、字号、行间距、段落对齐方式等,需... 目录关键代码一级标题设置  正文设置完整代码运行结果最近关于批处理格式的问题我查了很多资料,但是都没