poi导出word 详细教程

文章目录

  • HWPF
    • HWPF的基本概念
    • 基本操作
      • 引入的依赖
      • 读取Word文档
      • 创建Word文档
      • 修改Word文档
    • 高级操作
      • 操作表格
      • 格式化文本
  • XWPF
    • HWPF的基本概念
    • 基本操作
      • 读取Word文档
      • 创建Word文档
      • 修改Word文档
    • 高级操作
      • 操作表格
      • 格式化文本

HWPF

HWPF的基本概念

HWPF是Apache POI项目中的一个组件,它提供了一套API,用于操作Microsoft Word文档(.doc格式)。HWPF代表“Horrible Word Processor Format”,这个名字反映了Microsoft Word文档格式的复杂性和难度。HWPF允许用户在Java中读取、创建、修改Word文档。下面是基础的内容:

  • Range:Range是HWPF中的核心概念,它代表文档中的一个连续区域。你可以通过Range来访问和修改文本内容。
  • Paragraph:Paragraph代表文档中的一个段落。每个Range都由多个Paragraph组成。
  • CharacterRun:CharacterRun代表文档中的文本字符序列,它包含文本的格式信息,如字体、大小、颜色等。
  • Table:Table代表文档中的一个表格。每个Table由多个TableRow组成。
  • TableRow:TableRow代表表格中的一行,它由多个TableCell组成。
  • TableCell:TableCell代表表格中的一个单元格。

基本操作

引入的依赖

<dependencies><!-- Apache POI HWPF for handling .doc files --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.3</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>5.2.3</version></dependency><!-- Apache POI XWPF for handling .docx files --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version></dependency><!-- Other dependencies if needed for your project -->
</dependencies>

如果你需要处理.docx文件,那么poi-ooxml依赖是必需的,因为它包含了XWPF,这是Apache POI中用于处理Open XML格式(.docx)的库。

读取Word文档

import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import java.io.FileInputStream;
import java.io.IOException;
public class ReadWordExample {public static void main(String[] args) throws IOException {FileInputStream fis = new FileInputStream("example.doc");POIFSFileSystem fs = new POIFSFileSystem(fis);HWPFDocument doc = new HWPFDocument(fs);// 获取文档文本String text = doc.getText();System.out.println(text);fis.close();}
}

创建Word文档

import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class CreateWordExample {public static void main(String[] args) throws IOException {HWPFDocument doc = new HWPFDocument();// 添加文本Range range = doc.Range();range.insertAfter("Hello, World!");// 保存文档try (OutputStream out = new FileOutputStream("created.doc")) {doc.write(out);}}
}

修改Word文档

import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ModifyWordExample {public static void main(String[] args) throws IOException {FileInputStream fis = new FileInputStream("example.doc");HWPFDocument doc = new HWPFDocument(fis);// 修改文本Range range = doc.Range();range.replaceText("old text", "new text");// 保存修改后的文档try (FileOutputStream out = new FileOutputStream("modified.doc")) {doc.write(out);}fis.close();}
}

高级操作

操作表格

import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.hwpf.usermodel.Table;
import org.apache.poi.hwpf.usermodel.TableCell;
import org.apache.poi.hwpf.usermodel.TableRow;
import java.io.FileInputStream;
public class TableExample {public static void main(String[] args) throws IOException {FileInputStream fis = new FileInputStream("example.doc");HWPFDocument doc = new HWPFDocument(fis);Range range = doc.Range();Table table = range.insertTableAfter(1, 3);TableRow row = table.getRow(0);TableCell cell = row.getCell(0);cell.setText("Row 1, Cell 1");fis.close();}
}

格式化文本

import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.CharacterRun;
import org.apache.poi.hwpf.usermodel.Range;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FormatTextExample {public static void main(String[] args) throws IOException {FileInputStream fis = new FileInputStream("example.doc");HWPFDocument doc = new HWPFDocument(fis);Range range = doc.Range();CharacterRun run = range.insertAfter("Bold and italic text").getCharacterRun(0);run.setBold(true);run.setItalic(true);// 保存文档try (FileOutputStream out = new FileOutputStream("formatted.doc")) {doc.write(out);}fis.close();}
}

XWPF

HWPF的基本概念

XWPF是Apache POI项目中的一个组件,用于操作Microsoft Word文档的新格式(.docx)。XWPF代表“XML Word Processor Format”,它允许用户在Java中读取、创建、修改Word文档。下面是一些基础的内容:

  • XWPFDocument:这是XWPF的主要类,代表一个Word文档。你可以使用它来创建新的文档或加载现有的文档。
  • XWPFParagraph:代表文档中的一个段落。每个XWPFDocument包含多个XWPFParagraph对象。
  • XWPFRun:代表文档中的一个文本运行。每个XWPFParagraph包含多个XWPFRun对象。XWPFRun用于设置文本的格式,如字体、大小、颜色等。
  • XWPFTable:代表文档中的一个表格。每个XWPFTable包含多个XWPFTableRow对象。
  • XWPFTableRow:代表表格中的一行。每个XWPFTableRow包含多个XWPFTableCell对象。
  • XWPFTableCell:代表表格中的一个单元格。

基本操作

读取Word文档

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import java.io.File;
import java.io.FileInputStream;
import java.util.List;
public class ReadWordExample {public static void main(String[] args) throws Exception {FileInputStream fis = new FileInputStream(new File("example.docx"));XWPFDocument document = new XWPFDocument(fis);// 获取所有段落List<XWPFParagraph> paragraphs = document.getParagraphs();for (XWPFParagraph paragraph : paragraphs) {System.out.println(paragraph.getText());}fis.close();}
}

创建Word文档

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import java.io.FileOutputStream;
public class CreateWordExample {public static void main(String[] args) throws Exception {XWPFDocument document = new XWPFDocument();// 创建一个段落XWPFParagraph paragraph = document.createParagraph();paragraph.createRun().setText("Hello, World!");// 保存文档FileOutputStream out = new FileOutputStream(new File("created.docx"));document.write(out);out.close();document.close();}
}

修改Word文档

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.FileOutputStream;
public class ModifyWordExample {public static void main(String[] args) throws Exception {FileInputStream fis = new FileInputStream(new File("example.docx"));XWPFDocument document = new XWPFDocument(fis);// 修改第一个段落的文本XWPFParagraph paragraph = document.getParagraphs().get(0);paragraph.createRun().setText("This is a modified paragraph.");// 保存修改后的文档FileOutputStream out = new FileOutputStream(new File("modified.docx"));document.write(out);out.close();document.close();fis.close();}
}

高级操作

操作表格

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import java.io.File;
import java.io.FileInputStream;
public class TableExample {public static void main(String[] args) throws Exception {FileInputStream fis = new FileInputStream(new File("example.docx"));XWPFDocument document = new XWPFDocument(fis);// 创建一个表格XWPFTable table = document.createTable();// 创建一个行XWPFTableRow row = table.getRow(0);// 创建单元格并设置文本XWPFTableCell cell = row.getCell(0);cell.setText("Row 1, Cell 1");fis.close();}
}

格式化文本

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class FormatTextExample {public static void main(String[] args) throws Exception {FileInputStream fis = new FileInputStream(new File("example.docx"));XWPFDocument document = new XWPFDocument(fis);// 创建一个段落XWPFParagraph paragraph = document.createParagraph();// 创建一个文本运行并设置格式XWPFRun run = paragraph.createRun();run.setText("Bold and italic text");run.setBold(true);run.setItalic(true);// 保存文档FileOutputStream out = new FileOutputStream(new File("formatted.docx"));document.write(out);out.close();document.close();fis.close();}
}

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

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

相关文章

东芝移动硬盘数据恢复方法有哪些

谁能懂我此刻的心情啊&#xff01;移动硬盘用起来真的超级方便&#xff0c;如今我的工作几乎都离不开它&#xff0c;用来存放各种重要文件。可是&#xff0c;让人头疼的事情发生了&#xff0c;昨天我发现移动硬盘里的部分数据竟然莫名其妙地消失了&#xff01;这可咋整啊&#…

tonemapping相关

参考 tone mapping thinkingACES Filmic Tone Mapping Curvefilmic-tonemapping-with-piecewise-power-curvesGDC high dynamic range

MySQL解析JSON格式字段并取出部分值

在MySQL中&#xff0c;从JSON格式的字段中提取数据可以使用JSON_EXTRACT()函数&#xff0c;或者使用->操作符。以下是一些示例&#xff1a; 假设你有一个名为mytable的表&#xff0c;其中有一个json_data字段&#xff0c;它的数据类型是JSON&#xff0c;并且包含了一个JSON…

【GD32】03 - EXTI外部中断

EXTI EXTI&#xff0c;全称External Interrupt/Event Controller&#xff0c;即外部中断/事件控制器&#xff0c;是微控制器中的一个重要组成部分。它主要用于管理来自外部设备的中断和事件请求。以下是关于EXTI的详细介绍&#xff1a; 功能概述&#xff1a; EXTI管理了控制器的…

n的阶乘(函数)(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>//声明n的阶乘函数fac; int fac(int n);int main() {//初始化变量值&#xff1b;int n, result;//获取要阶乘的数&#xff1b;printf("请输入要阶乘的n&…

Excel中的`MMULT`函数

Excel中的MMULT函数是一个用于执行矩阵乘法运算的函数。矩阵乘法是线性代数中的一个基本运算&#xff0c;它允许我们计算两个矩阵的乘积&#xff0c;得到一个新的矩阵。与普通的标量乘法不同&#xff0c;矩阵乘法涉及到行与列的对应元素相乘然后求和的过程。MMULT函数在进行数据…

Circuitbreaker Resilience4j 替换Netflix Hystrix

Spring cloud 早已经不支持也不维护Netflix Hystrix了。但是项目中一直用openfeign&#xff0c; Feign里的fallback原来一直用Hystrix做熔断。怎么找到一个可以替换hystrix相同的东西呢&#xff1f;用CricuitBreaker Resilience4j可以完全替换。 在pom.xml中加入spring-cloud-…

Python中进程类Process的方法与属性的使用示例

一、示例代码&#xff1a; from multiprocessing import Process import time import osdef child_1(interval):print(子进程&#xff08;%s&#xff09;开始执行&#xff0c;父进程为&#xff08;%s&#xff09; % (os.getpid(), os.getppid()))t_start time.time()time.sle…

在Ubuntu下搭建自己的以太坊私有链

最近要对链及链上应用进行压测,为了方便操作及分析问题,就自己搭建了一个eth私链。当前版本安装官方指引发现有卡点,于是决定整理一个文档,为其他有需要的朋友提供便捷操作,节约时间。 一、环境配置 linux操作系统:Ubuntu 20.04.6 LTS (Focal Fossa) go version: go1…

【VUE.js】---

问题 vue.config.js 文件中使用了 vue/cli-service 的新特性 defineConfig&#xff0c;但是你的项目依赖版本过旧。 defineConfig 是一个用于定义 Vue CLI 项目配置的辅助函数&#xff0c;它可以帮助 TypeScript 用户更好地获取类型提示。但是&#xff0c;你使用的是 Vue CLI 的…

shell脚本中条件语句

一.test测试 在Shell脚本中&#xff0c;test命令用于进行条件测试。它也可以通过方括号[]来表示&#xff0c;因为test实际上是[命令的一个别名。 格式1&#xff1a;test 条件表达式 格式2&#xff1a;[ 条件表达式 ] 注意[ ]空格&#xff0c;否则会失败 测试 是否成功使用…

【opencv】图像处理(二)

前文指引 一、使用到的图片 一、梯度计算 原始图片 img cv2.imread(circle.jpg)plt.imshow(img) plt.show()sobel算子 使用两个核 Gx [[-1,0,1], [-2,0,2], [-1,0,1]] Gy [[-1,-2,-1], [0,0,0], [1,2,1]] dst cv2.Sobel(src, ddepth, dx, dy, ksize) ddepth 深度 -1d…

域控安全 ----> Ntds.dit文件抓取

大家还记得内网渗透的初衷吗&#xff1f;&#xff1f;&#xff1f; 找到域馆&#xff0c;拿下域控&#xff01;&#xff01; 拿下了域控就是拿下了整个域&#xff01;&#xff01; 但是大家知道拿下域环境之后应该怎么操作吗(灵魂拷问)&#xff1f;&#xff1f;&#xff1f; …

GCP谷歌云有什么数据库类型,该怎么选择

GCP谷歌云提供的数据库类型主要包括&#xff1a; 关系型数据库&#xff1a;这类数据库适用于结构化数据&#xff0c;通常用于数据结构不经常发生变化的场合。在GCP中&#xff0c;关系型数据库选项包括Cloud SQL和Cloud Spanner。Cloud SQL提供托管的MySQL、PostgreSQL和SQL Se…

【macos】dnsmasq搭建DNS服务器

dnsmasq安装 brew install dnsmasq brew info dnsmasq//每次配置完&#xff0c;重启服务 sudo brew services restart dnsmasq修改 /usr/local/etc/dnsmasq.conf log-queries log-facility/var/log/dnsmasq.log bogus-nxdomain119.29.29.29 cache-size2048 port53 no-resolv/…

详细对比Sass与SCSS

Sass&#xff08;Syntactically Awesome Style Sheets&#xff09;和SCSS&#xff08;Sassy Cascaded Style Sheets&#xff09;都是CSS的预处理器&#xff0c;它们允许开发者使用变量、嵌套规则、函数和其他编程特性来编写更易于维护和管理的样式表。然而&#xff0c;Sass和SC…

提升文本到图像模型的空间一致性:SPRIGHT数据集与训练技术的新进展

当前的T2I模型&#xff0c;如Stable Diffusion和DALL-E&#xff0c;虽然在生成高分辨率、逼真图像方面取得了成功&#xff0c;但在空间一致性方面存在不足。这些模型往往无法精确地按照文本提示中描述的空间关系来生成图像。为了解决这一问题&#xff0c;研究人员进行了深入分析…

vue + element-plus 开发中遇到的问题

1.问题之路由守卫 初写路由守卫&#xff0c;对于next()的理解不是很透彻&#xff0c;就想着都放行&#xff0c;不然看不到效果&#xff0c;结果控制台出现了警告&#xff0c;想着报黄的问题就不是问题&#xff0c;但仔细一看发现他说&#xff0c;如果再生产阶段就会失败&#x…

STM32(开篇总结)

STM32介绍 STM32是意法半导体公司基于ARM Cortex-M内核开发的32位微控制器 STM32常应用在嵌入式领域&#xff0c;如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等 STM32功能强大、性能优异片上资源丰富、功耗低&#xff0c;是一款经典的嵌入式微控制器…

数据可视化(十二):Pandas太阳黑子数据、图像处理——离散极值、核密度、拟合曲线、奇异值分解等高级操作

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…