java快速导出word文档

   点关注不迷路,欢迎再访!	

精简博客内容,尽量已行业术语来分享。
努力做到对每一位认可自己的读者负责。
帮助别人的同时更是丰富自己的良机。

文章目录

    • 前言
    • 一.添加 Apache POI 依赖
    • 二.填充文档内容
    • 三.导出文档效果测试

前言

在 Java 应用程序中,有时候我们需要将数据导出为 Word 文档,以便进行文档的编辑、打印或共享。本文将介绍如何使用 Java 实现导出 Word 文档的方法,帮助你灵活处理文档导出需求。

一.添加 Apache POI 依赖

    <dependency>
         <groupId>org.apache.poi</groupId>
         <artifactId>poi-ooxml</artifactId>
         <version>3.16</version>
    </dependency>
    <dependency>
         <groupId>org.apache.poi</groupId>
         <artifactId>ooxml-schemas</artifactId>
         <version>1.3</version>
    </dependency>

二.填充文档内容

在导出 Word 文档之前,需要创建一个空的 Word 文档对象

//创建文档对象
XWPFDocument doc = new XWPFDocument();
//页边距
DocxUtil.setDocumentMargin(doc, "1082", "1440", "1082", "1440");

使用 Apache POI 提供的 API,可以向文档中添加段落标题

// 创建段落
XWPFParagraph p = doc.createParagraph();
DocxUtil.setTextFontInfo(p, false, false, text, "宋体", "000000", "24", false, null, false, false, null, 0, null);
DocxUtil.setParagraphSpacingInfo(p, true, "0", "0", "100", "100", true, "240", STLineSpacingRule.AUTO);
DocxUtil.setParagraphAlignInfo(p, ParagraphAlignment.LEFT, TextAlignment.CENTER);

向文档中创建表格

XWPFParagraph paragraph = doc.createParagraph();
paragraph.setAlignment(ParagraphAlignment.CENTER);
XWPFTable table = paragraph.getDocument().createTable(3,3);//创建表格
table.setWidth(500);
table.setCellMargins(20, 20, 20, 20);
//表格属性
CTTblPr tablePr = table.getCTTbl().addNewTblPr();
//表格宽度
CTTblWidth width = tablePr.addNewTblW();
width.setW(BigInteger.valueOf(4000));
//获取第一行
List<XWPFTableCell> tableCells = table.getRow(0).getTableCells();
tableCells.get(0).setText("单元格值");

三.导出文档效果测试

public class ExamTest {
    public static void main(String[] args) throws IOException {
        XWPFDocument doc = new XWPFDocument();
       //页边距
        DocxUtil.setDocumentMargin(doc, "1082", "1440", "1082", "1440");
        addDocxParagraphTitle(doc,"标题");
        addDocxParagraph(doc,"第一个段落内容");
        FileOutputStream outputStream = new FileOutputStream("D://document.docx");
        XWPFParagraph paragraph = doc.createParagraph();
        paragraph.setAlignment(ParagraphAlignment.CENTER);
        addDocxParagraph(doc,null);
        addDocxParagraph(doc,"有边框的表格");
        XWPFTable table = paragraph.getDocument().createTable(3,4);//创建表格
        table.setWidth(500);
        table.setCellMargins(20, 20, 20, 20);
        //表格属性
        CTTblPr tablePr = table.getCTTbl().addNewTblPr();
        //表格宽度
        CTTblWidth width = tablePr.addNewTblW();
        width.setW(BigInteger.valueOf(8000));
        //无边框
        //CTTblBorders tableBorders = table.getCTTbl().getTblPr().addNewTblBorders();
        //tableBorders.addNewBottom().setVal(STBorder.NIL);
        //tableBorders.addNewLeft().setVal(STBorder.NIL);
        //tableBorders.addNewRight().setVal(STBorder.NIL);
        //tableBorders.addNewTop().setVal(STBorder.NIL);
        //tableBorders.addNewInsideH().setVal(STBorder.NIL);
        //tableBorders.addNewInsideV().setVal(STBorder.NIL);
        for (int k = 0; k < 3; k++) {
            List<XWPFTableCell> tableCells = table.getRow(k).getTableCells();
            if(k == 0){
                tableCells.get(0).setText("序号");
            }else{
                tableCells.get(0).setText(String.valueOf(k));
            }
            for (int j = 0; j < 3; j++) {
                if(k == 0){
                    tableCells.get(j+1).setText(String.valueOf(j+1));
                }else{
                    tableCells.get(j+1).setText("");
                }
            }
        }

        doc.write(outputStream);
        outputStream.close();

    }

    private static void addDocxParagraphTitle(XWPFDocument doc, String title) {
        // 标题
        XWPFParagraph titleP = doc.createParagraph();
        DocxUtil.setTextFontInfo(titleP, false, false, title, "宋体", "000000", "44", true, null, false,
                false, null, 0, null);
        DocxUtil.setParagraphSpacingInfo(titleP, true, "0", "0", "0", "50", true, "240", STLineSpacingRule.AUTO);
        DocxUtil.setParagraphAlignInfo(titleP, ParagraphAlignment.CENTER, TextAlignment.CENTER);
    }

    private static void addDocxParagraph(XWPFDocument doc, String text) {
        XWPFParagraph p = doc.createParagraph();
        DocxUtil.setTextFontInfo(p, false, false, text, "宋体", "000000", "24", false, null, false, false, null, 0, null);
        DocxUtil.setParagraphSpacingInfo(p, true, "0", "0", "100", "100", true, "240", STLineSpacingRule.AUTO);
        DocxUtil.setParagraphAlignInfo(p, ParagraphAlignment.LEFT, TextAlignment.CENTER);
    }
}

测试效果
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《MambaIR:一种基于状态空间模型的简单图像修复基线方法》学习笔记

paper&#xff1a;2402.15648 目录 摘要 一、引言 1、模型性能的提升依赖于网络感受野的扩大&#xff1a; 2、全局感受野和高效计算之间存在固有矛盾&#xff1a; 3、改进版 Mamba的巨大潜力 4、Mamba 在图像修复任务中仍面临以下挑战&#xff1a; 5、方法 6、主要贡献…

ngnix上传小文件成功,大文件报错

ngnix错误日志 "/var/tmp/nginx/client//0000001299" failed (2: No such file or directory), client: 10.188.141.160, server: 127.0.0.1, request: "POST /fts/sys/common/biUpload HTTP/1.1", host: "10.20.166.179", referrer: "http…

Word表格批量提取数据到Excel,批量提取,我爱excel

Word表格批量提取数据到Excel&#xff0c;Word导出到Excel - 我爱Excel助你高效办公 在日常办公中&#xff0c;Word表格常常用于记录和整理数据&#xff0c;但将这些数据从Word提取到Excel&#xff0c;特别是当涉及多个文件时&#xff0c;常常让人头疼。如果你经常需要将多个W…

【Zookeeper】Windows下安装Zookeeper(图文记录详细步骤,手把手包安装成功)

【Zookeeper】Windows下安装Zookeeper Zookeeper简介一、下载Zookeeper安装包1.1、官网下载Zookeeper1.2、网盘下载Zookeeper 二、解压Zookeeper安装包到指定目录三、Zookeeper安装目录下创建文件夹四、进入config目录五、复制zoo_sample.cfg文件&#xff0c;改名为zoo.cfg六、…

JDK长期支持版本(LTS)

https://blogs.oracle.com/java/post/the-arrival-of-java-23 jdk长期支持版本&#xff08;LTS&#xff09;&#xff1a;JDK 8、11、17、21&#xff1a;

深度学习J3周:RNN-心脏病预测

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 要求&#xff1a; 1.本地读取并加载数据 2.了解循环神经网络&#xff08;RNN&#xff09;的构建过程 3.测试集accuracy到达87% 拔高&#xff1a; 测试机a…

Linux C\C++方式下的文件I/O编程

【图书推荐】《Linux C与C一线开发实践&#xff08;第2版&#xff09;》_linux c与c一线开发实践pdf-CSDN博客 《Linux C与C一线开发实践&#xff08;第2版&#xff09;&#xff08;Linux技术丛书&#xff09;》(朱文伟&#xff0c;李建英)【摘要 书评 试读】- 京东图书 Lin…

FPGA:Quartus软件与操作系统版本对照表

文章目录 1.软件概述2.软件版本3.设计流程4.支持的设备5.新特性6.版本对照 1.软件概述 Quartus软件是由英特尔&#xff08;Intel&#xff09;公司开发的一款功能强大的FPGA&#xff08;现场可编程逻辑门阵列&#xff09;设计工具&#xff0c;广泛应用于数字电路设计、仿真、综…

ui设计公司分享:浅色 UI 设计

在数字化产品琳琅满目的今天&#xff0c;用户对于界面的要求早已不止于功能的实现&#xff0c;更追求一种舒适、无压的交互体验。而浅色UI设计&#xff0c;凭借其独特的魅力&#xff0c;正逐渐成为众多设计师营造优质体验的首选。 一、浅色UI设计的视觉优势 &#xff08;一&a…

Unity中实现伤害跳字效果(简单好抄)

第一步骤安装并导入Dotween插件&#xff08;也可以不用导入之后直接下载我的安装包&#xff09; 官网DOTween - 下载 第二步&#xff1a; 制作跳字预制体 建议把最佳适应打开&#xff0c;这样就不怕数字太大显示不全了。 第三步&#xff1a;创建一个空对象并编写脚本JumpNumbe…

为什么相关性不是因果关系?人工智能中的因果推理探秘

目录 一、背景 &#xff08;一&#xff09;聚焦当下人工智能 &#xff08;二&#xff09;基于关联框架的人工智能 &#xff08;三&#xff09;基于因果框架的人工智能 二、因果推理的基本理论 &#xff08;一&#xff09;因果推理基本范式&#xff1a;因果模型&#xff0…

VMamba 安装教程(无需更改base环境中的cuda版本)

导航 安装教程导航 Mamba 及 Vim 安装问题参看本人博客&#xff1a;Mamba 环境安装踩坑问题汇总及解决方法&#xff08;初版&#xff09;Linux 下Mamba 及 Vim 安装问题参看本人博客&#xff1a;Mamba 环境安装踩坑问题汇总及解决方法&#xff08;重置版&#xff09;Windows …

FRP内网穿透0.61.1新版教程

在上一篇zerotier讲述了如何实现虚拟局域网搭建&#xff0c;这篇会讲述FRP内网穿透的使用教程 那么frp与zerotier的区别是什么呢&#xff1f;&#xff08;说人话&#xff09; FRP 主要用于内网服务向外网的单向暴露。 ZeroTier 用于构建一个虚拟的私有网络&#xff0c;实现多点…

如何使用MaskerLogger防止敏感数据发生泄露

关于MaskerLogger MaskerLogger是一款功能强大的记录工具&#xff0c;该工具可以有效防止敏感数据泄露的发生。 MaskerLogger旨在保护目标系统的日子安全&#xff0c;此格式化程序可确保你的日志安全并防止敏感数据泄露。例如使用此格式化程序&#xff0c;打印下列数据&#x…

React进阶之react.js、jsx模板语法及babel编译

React React介绍React官网初识React学习MVCMVVM JSX外部的元素props和内部的状态statepropsstate 生命周期constructorgetDerivedStateFromPropsrendercomponentDidMount()shouldComponentUpdategetSnapshotBeforeUpdate(prevProps, prevState) 创建项目CRA&#xff1a;create-…

【Python】JSON

文章目录 定义Json格式数据转化 定义 JSON是一种轻量级的数据交互格式&#xff0c;可以按照JSON指定的格式去组织和封装数据 JSON本质上是一个带有特定格式的字符串 JSON可以直接和Python的字典或列表进行无缝转换 【主要功能】 JSON就是一个在各个编程语言中流通的数据格…

.Net Core微服务入门全纪录(五)——Ocelot-API网关(下)

系列文章目录 1、.Net Core微服务入门系列&#xff08;一&#xff09;——项目搭建 2、.Net Core微服务入门全纪录&#xff08;二&#xff09;——Consul-服务注册与发现&#xff08;上&#xff09; 3、.Net Core微服务入门全纪录&#xff08;三&#xff09;——Consul-服务注…

【18】Word:明华中学-儿童医保❗

目录 题目​ NO2 NO3 NO4 NO5 NO6 NO7 NO8 NO9 题目 NO2 布局→页面设置对话框→纸张方向&#xff1a;横向→纸张大小&#xff1a;A3 &#xff1b;页面设置对话框&#xff1a;直接输入纸张大小的宽度和高度即可→页面设置对话框&#xff1a;上下左右边距→版式&…

数据结构漫游记:动态实现栈(stack)

嘿&#xff0c;各位技术潮人&#xff01;好久不见甚是想念。生活就像一场奇妙冒险&#xff0c;而编程就是那把超酷的万能钥匙。此刻&#xff0c;阳光洒在键盘上&#xff0c;灵感在指尖跳跃&#xff0c;让我们抛开一切束缚&#xff0c;给平淡日子加点料&#xff0c;注入满满的pa…

SpringBoot 搭建 SSE

参考链接 https://www.51cto.com/article/798001.html 了解一下SseEmitter&#xff08;一&#xff09;-CSDN博客 依赖 有默认的 springboot-web 依赖即可 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-start…