iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java SpringBoot集成文件之如何使用POI导出Word文档
  • 916
分享到

Java SpringBoot集成文件之如何使用POI导出Word文档

Java SpringBoot集成文件Java 如何使用POI导出Word文档 2022-11-13 13:11:46 916人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录前言知识准备什么是POI实现案例Pom依赖导出Word前言 通过Apache POI导出excel,而Apache POI包含是操作Office Open XML(OOXML)标

前言

通过Apache POI导出excel,而Apache POI包含是操作Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java api。所以也是可以通过POI来导出word的。本文主要介绍通过SpringBoot集成POI工具实现Word的导出功能。

知识准备

需要理解Apache POI遵循的标准(Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)), 这将对应着API的依赖包。

什么是POI

Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能。POI为“Poor Obfuscation Implementation”的首字母缩写,意为“简洁版的模糊实现”。

Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API。更多请参考​ 官方文档。

实现案例

这里展示springBoot集成POI导出用户信息的Word例子。

Pom依赖

引入poi的依赖包

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.2</version>
</dependency>

导出Word

UserController中导出的方法

package tech.pdai.springboot.file.word.poi.controller;


import java.io.OutputStream;

import javax.servlet.Http.httpservletResponse;

import io.swagger.annotations.ApiOperation;
import org.apache.poi.xWPF.usermodel.XWPFDocument;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.WEB.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import tech.pdai.springboot.file.word.poi.service.IUserService;


@RestController
@RequestMapping("/user")
public class UserController {

@Autowired
private IUserService userService;

@ApiOperation("Download Word")
@GetMapping("/word/download")
public void download(HttpServletResponse response){
try {
XWPFDocument document = userService.generateWordXWPFDocument();
response.reset();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition",
"attachment;filename=user_world_" + System.currentTimeMillis() + ".docx");
OutputStream os = response.getOutputStream();
document.write(os);
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

UserServiceImple中导出Word方法

package tech.pdai.springboot.file.word.poi.service.impl;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;

import lombok.extern.slf4j.Slf4j;
import org.apache.poi.openxml4j.exceptions.InvalidFORMatException;
import org.apache.poi.util.Units;
import org.apache.poi.xwpf.usermodel.BreakType;
import org.apache.poi.xwpf.usermodel.Document;
import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Service;
import tech.pdai.springboot.file.word.poi.entity.User;
import tech.pdai.springboot.file.word.poi.service.IUserService;


@Slf4j
@Service
public class UserServiceImpl implements IUserService {

@Override
public XWPFDocument generateWordXWPFDocument(){
XWPFDocument doc = new XWPFDocument();

// Title
createTitle(doc, "Java 全栈知识体系");

// Chapter 1
createChapterH1(doc, "1. 知识准备");
createChapterH2(doc, "1.1 什么是POI");
createParagraph(doc, "Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API。用它可以使用Java读取和创建,修改MS Excel文件.而且,还可以使用Java读取和创建MS Word和MSPowerPoint文件。更多请参考[官方文档](https://poi.apache.org/index.html)");
createChapterH2(doc, "1.2 POI中基础概念");
createParagraph(doc, "生成xls和xlsx有什么区别?POI对Excel中的对象的封装对应关系?");

// Chapter 2
createChapterH1(doc, "2. 实现案例");
createChapterH2(doc, "2.1 用户列表示例");
createParagraph(doc, "以导出用户列表为例");

// 表格
List<User> userList = getUserList();
XWPFParagraph paragraph = doc.createParagraph();
XWPFTable table = paragraph.getDocument().createTable(userList.size(), 5);
table.setWidth(500);
table.setCellMargins(20, 20, 20, 20);

//表格属性
CTTblPr tablePr = table.getCTTbl().addNewTblPr();
//表格宽度
CTTblWidth width = tablePr.addNewTblW();
width.setW(BigInteger.valueOf(8000));

for(int i = 0; i< userList.size(); i++) {
List<XWPFTableCell> tableCells = table.getRow(i).getTableCells();
tableCells.get(0).setText(userList.get(i).getId()+"");
tableCells.get(1).setText(userList.get(i).getUserName());
tableCells.get(2).setText(userList.get(i).getEmail());
tableCells.get(3).setText(userList.get(i).getPhoneNumber()+"");
tableCells.get(4).setText(userList.get(i).getDescription());
}

createChapterH2(doc, "2.2 图片导出示例");
createParagraph(doc, "以导出图片为例");
// 图片
InputStream stream = null;
try {
XWPFParagraph paragraph2 = doc.createParagraph();
Resource resource = new ClassPathResource("pdai-guli.png");
stream = new FileInputStream(resource.getFile());
XWPFRun run = paragraph2.createRun();
run.addPicture(stream, Document.PICTURE_TYPE_PNG, "Generated", Units.toEMU(256), Units.toEMU(256));
} catch (IOException | InvalidFormatException e) {
e.printStackTrace();
}

return doc;
}

private void createTitle(XWPFDocument doc, String content){
XWPFParagraph title = doc.createParagraph();
title.setAlignment(ParagraphAlignment.CENTER);
XWPFRun r1 = title.createRun();
r1.setBold(true);
r1.setFontFamily("宋体");
r1.setText(content);
r1.setFontSize(22);
}

private void createChapterH1(XWPFDocument doc, String content){
XWPFParagraph actTheme = doc.createParagraph();
actTheme.setAlignment(ParagraphAlignment.LEFT);
XWPFRun runText1 = actTheme.createRun();
runText1.setBold(true);
runText1.setText(content);
runText1.setFontSize(18);
}
private void createChapterH2(XWPFDocument doc, String content){
XWPFParagraph actType = doc.createParagraph();
XWPFRun runText2 = actType.createRun();
runText2.setBold(true);
runText2.setText(content);
runText2.setFontSize(15);
}

private void createParagraph(XWPFDocument doc, String content){
XWPFParagraph actType = doc.createParagraph();
XWPFRun runText2 = actType.createRun();
runText2.setText(content);
runText2.setFontSize(11);
}

private List<User> getUserList(){
List<User> userList = new ArrayList<>();
for (int i = 0; i < 5; i++) {
userList.add(User.builder()
.id(Long.parseLong(i + "")).userName("pdai" + i).email("pdai@pdai.tech" + i).phoneNumber(121231231231L)
.description("hello world" + i)
.build());
}
return userList;
}
}

导出:

导出后的word:

到此这篇关于Java SpringBoot集成文件之如何使用POI导出Word文档的文章就介绍到这了,更多相关Java POI导出Word文档内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java SpringBoot集成文件之如何使用POI导出Word文档

本文链接: https://www.lsjlt.com/news/171342.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java SpringBoot集成文件之如何使用POI导出Word文档
    目录前言知识准备什么是POI实现案例Pom依赖导出Word前言 通过Apache POI导出excel,而Apache POI包含是操作Office Open XML(OOXML)标...
    99+
    2022-11-13
    Java SpringBoot集成文件 Java 如何使用POI导出Word文档
  • Java POI导出富文本的内容到word文档
    一、需求: 当创建使用富文本编辑器,操作完的数据,传输到后台都是带有html标签的。 如:标题头第二个标题百度搜索 我们想把富文本数据转换为Word内容。 二,依赖 org.jsoup jsoup 1.12.1 or...
    99+
    2023-08-31
    java Powered by 金山文档
  • Java POI导出Word、Excel、Pdf文档(可在线预览PDF)
    导入依赖Pom.xml                     org.apache.poi             poi             3.14          org.apache.poi poi-oo...
    99+
    2023-09-20
    java word excel
  • SpringBoot如何基于POI-tl和word模板导出庞大的Word文件
    目录前言知识准备什么是poi-tlpoi-tl的TDO模式Template:模板Data-model:数据Output:输出实现案例Pom依赖导出基于template的word导出m...
    99+
    2022-11-13
    SpringBoot基于POI-tl导出Word文件 SpringBoot导出Word文件
  • java 使用POI合并两个word文档
    java POI合并两个word文档 有需要的可以将主函数中写死的地方改为一个List import java.io.FileInputStream; import java.i...
    99+
    2024-04-02
  • 利用Java Apache POI 生成Word文档示例代码
    最近公司做的项目需要实现导出Word文档的功能,网上关于POI生成Word文档的例子很少,找了半天才在官网里找到个Demo,有了Demo一切就好办了。 package org.apache.poi.xwpf.usermodel; impo...
    99+
    2023-05-31
    apache poi word
  • 怎么使用POI将HTML文件转换为Word文档
    这篇文章主要讲解了“怎么使用POI将HTML文件转换为Word文档”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用POI将HTML文件转换为Word文档”吧!首先,我们需要在代码中添加...
    99+
    2023-07-06
  • 在Java Web中Excel文件如何使用POI实现导出
    在Java Web中Excel文件如何使用POI实现导出?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。采用Spring mvc架构:Controller层代码如下@Cont...
    99+
    2023-05-31
    java web poi
  • caj文件如何转换成word文档
    今天小编给大家分享一下caj文件如何转换成word文档的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。caj文件怎么转换成wo...
    99+
    2023-07-04
  • Java如何集成swagger文档组件
    这篇文章主要介绍了Java如何集成swagger文档组件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一:简介  Swagger 是一个规范和完整的框架,用于生成、描述、调用...
    99+
    2023-06-20
  • SpringBoot中如何使用POI导入导出Excel
    SpringBoot中如何使用POI导入导出Excel,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.创建Excel文档HSSFWorkbook workboo...
    99+
    2023-06-19
  • 【导出Word】如何使用Java+Freemarker模板引擎,根据XML模板文件生成Word文档(只含文本内容的模板)
    这篇文章,主要介绍如何使用Java+Freemarker模板引擎,根据XML模板文件生成Word文档。 目录 一、导出Word文档 1.1、基础知识 1.2、制作模板文件 1.3、代码实现 (1)引入依赖 (2)创建Freemarke...
    99+
    2023-10-23
    word Java导出Word Freemarker Word文档导出功能 根据模板文件导出Word文档
  • Java使用poi导出ppt文件的实现代码
    什么是poi Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Of...
    99+
    2024-04-02
  • php如何将word文档转成PDF文件
    本文小编为大家详细介绍“php如何将word文档转成PDF文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“php如何将word文档转成PDF文件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。第一步:安装和配置...
    99+
    2023-07-05
  • 如何将HTML文件转换成Word文档
    随着互联网和信息技术的不断进步,越来越多的人开始使用网页来展示和传递信息。然而,有些情况下我们需要将网页的内容转换成Word文档,例如需要打印文档、需要在Word中编辑等。本文将介绍如何将HTML文件转换成Word文档。一、使用在线转换工具...
    99+
    2023-05-14
  • Springboot如何导出文件
    这篇文章主要介绍Springboot如何导出文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!后端代码可以把请求设置为post,我这里是Get @RequestMapping(value =&nb...
    99+
    2023-06-21
  • Java项目中的word文档如何利用Freemarker进行导出
    本篇文章给大家分享的是有关Java项目中的word文档如何利用Freemarker进行导出,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。实现步骤用Microsoft Offic...
    99+
    2023-05-31
    freemarker word java
  • JAVA:使用POI SXSSFWorkbook方式导出Excel大数据文件
    Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java对Microsoft Office格式档案读和写的功能。POI组件可以提供Java操作Microsoft Office的A...
    99+
    2023-09-01
    java excel microsoft
  • 如何使用java导出Excel文件
    如何使用java导出Excel文件?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。java导出Excel通用方法的实例详解Java导出Excel通用方法,只需要一...
    99+
    2023-05-31
    java excel ava
  • 如何利用node生成word文档
    这篇“如何利用node生成word文档”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何利...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作