使用spire.doc for java 操作文档(添加段落,动态生成表格,给段落设置字体样式等)

2023-05-16

31、使用spire.doc for java 操作文档记录

// 创建段落 
public static void createText(Section section,List<ApplyObject> wordList){
        //      创建一个段落,添加一些信息 一、查询需求:
        Paragraph paragraph = section.addParagraph();
        TextRange tr = paragraph.appendText("专线一键搜查询内容");
        tr.getCharacterFormat().setFontSize(20);
        String name = "";
        String sfzhm = "";
        String queryContent = "";
        for (ApplyObject applyObject : wordList){
            name+=applyObject.getSelName()+",";
            sfzhm+=applyObject.getIdNumber()+",";
            queryContent = applyObject.getSelTableStr();
        }
        String nameNew = name.substring(0,name.length()-1);
        String sfzhmNew = sfzhm.substring(0,sfzhm.length()-1);
//        创建一个段落添加查询需求里面的具体信息
        Paragraph paragraph3 = section.addParagraph();
        TextRange tr3 = paragraph3.appendText("外网专线查询对象为:"+nameNew+"("+sfzhmNew+")"+","+"查询数据项包括:"+queryContent);

        //      创建一个段落,添加一些信息 一、查询内容:
        Paragraph paragraph2 = section.addParagraph();
        TextRange tr2 = paragraph2.appendText("专线一键搜查询结果");
        tr2.getCharacterFormat().setFontSize(20);
    }


// 给设置的段落添加样式
// 给全文中的段落添加样式,如果你只有一个section的话,只需要执行里面的一段话就可以了
找到段落,给每一个段落添加样式
        ParagraphStyle style1 = new ParagraphStyle(document);
        style1.setName("style");
        style1.getCharacterFormat().setFontName("仿宋_GB2312");
        document.getStyles().add(style1);
       for(int i = 0; i < doc.getSections().getCount(); i++) {
            Section section = doc.getSections().get(i);
            for (int j = 0; j < section.getParagraphs().getCount(); j++) {
                Paragraph paragraph = section.getParagraphs().get(j);
                paragraph.applyStyle(style1.getName());
            }
        }

// 动态创建表格
   public static void createDoc(Section section, List<String> header, List<List<Object>> data, String title, List<ApplyObject> wordList) {
        //添加表格
        Table table = section.addTable(true);
        //设置表格的行数和列数
        table.resetCells(data.size() + 2, header.size());
        //设置第一行作为表格的表头并添加数据
        TableRow row = table.getRows().get(1);
        row.isHeader(true);
        row.setHeight(40);
        row.setHeightType(TableRowHeightType.Exactly);
        TableRow row3 = table.getRows().get(0);
        row3.isHeader(true);
        row3.setHeight(60);
        row3.setHeightType(TableRowHeightType.Exactly);
        row3.getCells().get(0).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle);
        table.applyHorizontalMerge(0, 0, header.size() - 1);
        Paragraph p1 = row3.getCells().get(0).addParagraph();
        p1.getFormat().setHorizontalAlignment(HorizontalAlignment.Center);
        TextRange range3 = p1.appendText(title);
        range3.getCharacterFormat().setFontName("仿宋_GB2312");
        range3.getCharacterFormat().setFontSize(12f);
        range3.getCharacterFormat().setTextColor(Color.black);
        range3.getCharacterFormat().setBold(true);

        for (int i = 0; i < header.size(); i++) {
            row.getCells().get(i).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle);
            Paragraph p = row.getCells().get(i).addParagraph();
            p.getFormat().setHorizontalAlignment(HorizontalAlignment.Center);
            TextRange range1 = p.appendText(header.get(i));
            range1.getCharacterFormat().setTextColor(Color.black);
            range1.getCharacterFormat().setFontName("仿宋_GB2312");
            range1.getCharacterFormat().setFontSize(12f);
            range1.getCharacterFormat().setBold(true);
        }

        //添加数据到剩余行
        try{
            for (int r = 0; r < data.size(); r++) {
                TableRow dataRow = table.getRows().get(r + 2);
                dataRow.setHeight(25);
                dataRow.setHeightType(TableRowHeightType.Exactly);
                dataRow.getRowFormat().setBackColor(Color.white);
                for (int c = 0; c < data.get(r).size(); c++) {
                              dataRow.getCells().get(c).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle);
                    String s = "";
                    if (data.get(r).get(c) instanceof Timestamp) {
                        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定义格式,不显示毫秒
                        s = df.format((Timestamp) (data.get(r).get(c)));
                    } else if (data.get(r).get(c) instanceof Date) {
                        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定义格式,不显示毫秒
                        s = df.format((Date) (data.get(r).get(c)));
                    } else if (data.get(r).get(c) == null) {
                        s = "";
                    } else {
                        s = data.get(r).get(c).toString();
                    }

                    TextRange range2 = dataRow.getCells().get(c).addParagraph().appendText(s);


                    range2.getCharacterFormat().setFontName("仿宋_GB2312");
                    range2.getCharacterFormat().setFontSize(10f);
                }
            }
        }catch (Exception e){
            e.getMessage();
            log.info("插入数据有异常");
        }
        section.addParagraph();
    }
    //生成页眉和页脚
  public static void insertHeaderAndFooter(Section section) {

        //分别获取section的页眉页脚
        HeaderFooter header = section.getHeadersFooters().getHeader();
        HeaderFooter footer = section.getHeadersFooters().getFooter();

        //添加段落到页眉
        Paragraph headerParagraph = header.addParagraph();

        //添加文字到页眉的段落
        TextRange text = headerParagraph.appendText("页眉测试");
        text.getCharacterFormat().setFontName("仿宋_GB2312");
        text.getCharacterFormat().setFontSize(10);
        text.getCharacterFormat().setItalic(true);
        headerParagraph.getFormat().setHorizontalAlignment(HorizontalAlignment.Left);

        //设置页眉段落的底部边线样式
        headerParagraph.getFormat().getBorders().getBottom().setBorderType(BorderStyle.Single);
        headerParagraph.getFormat().getBorders().getBottom().setLineWidth(1f);

        //添加段落到页脚
        Paragraph footerParagraph = footer.addParagraph();

        //添加Field_Page和Field_Num_Pages域到页脚段落,用于显示当前页码和总页数
        footerParagraph.appendField("page number", FieldType.Field_Page);
        footerParagraph.appendText("/");
        footerParagraph.appendField("number of pages", FieldType.Field_Num_Pages);
        footerParagraph.getFormat().setHorizontalAlignment(HorizontalAlignment.Right);

        //设置页脚段落的顶部边线样式
        footerParagraph.getFormat().getBorders().getTop().setBorderType(BorderStyle.Single);
        footerParagraph.getFormat().getBorders().getTop().setLineWidth(1f);
    }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用spire.doc for java 操作文档(添加段落,动态生成表格,给段落设置字体样式等) 的相关文章

  • Ps1终端提示符的参数设置

    1 了解PS1 PS1 61 u 64 h W PS1的常用参数以及含义 d xff1a 代表日期 xff0c 格式为weekday month date xff0c 例如 xff1a Mon Aug 1 H xff1a 完整的主机名称 h
  • Python3 实现简单的生命游戏

    Python3 实现简单的生命游戏 生命游戏是英国数学家约翰 何顿 康威在1970年发明的细胞自动机 生命游戏原理 细胞自动机 xff08 又称元胞自动机 xff09 xff0c 名字虽然很深奥 xff0c 但是它的行为却是非常美妙的 所有
  • 图论

    图是数据结构和算法学中最强大的框架之一 xff08 或许没有之一 xff09 图 xff08 graph xff09 并不是指图形图像 xff08 image xff09 或地图 xff08 map xff09 通常来说 xff0c 我们会
  • 【Python】【Pygame】游戏:抓球

    来源 xff1a Python编程 从入门到实践 13 5 14 1 14 2 我感觉这个题目继续学习还可以优化 xff0c 是一个不错的小游戏 等我学了记分再来继续改进 抓球 xff08 13 5 xff09 碗在底部左右移动 xff0c
  • Linux MariaDB 主从复制

    安装MariaDB 安装MariaDB教程 主从复制 搭建主从复制数据库不能先建数据库 xff0c 有数据库 xff0c 需要先删除 xff01 xff01 xff01 Master主数据库 主从复制详细参数列表 主服务器MariaDB的
  • Linux MariaDB使用OpenSSL安装SSL证书

    进入到证书存放目录 xff0c 批量删除 pem证书 警告 xff1a 确保已经进入到证书存放目录 find span class token punctuation span span class token operator span
  • Windows Server 2016创建用户、授权、其他用户远程登录、禁止/恢复administrator远程登录

    创建用户和授权管理员 win 43 s搜索控制面板 用户账户 更改账户类型 添加用户账户 完成 更改账户类型 管理员 更改账户类型 允许其他用户远程登录 win 43 s搜索高级系统设置 远程 远程桌面 允许远程连接到此计算机和勾选仅允许运
  • 使用kotlin扩展插件/依赖项简化代码(在最新版本4.0以后,此插件已被弃用,故请选择性学习,以了解为主。)

    1 添加取代findViewById XXX 的插件 xff1b id 39 kotlin android extensions 39 取代findViewById XXX 可以在kotlin代码中直接使用View上的控件id 2 扩展插件
  • 华为Fusion Compute通过存储LUN快照恢复数据

    上一篇博客里边写到了VMware虚拟化通过存储LUN快照恢复数据 xff0c 在里边提到华为虚拟化和其他KVM有区别 xff0c 这是真的血泪史呀 事情是这样的 xff0c 一个客户用的华为云桌面 xff0c 就是普通架构 xff0c 传统
  • 【转】ubuntu linux取消软件密码环和取消输入开机密码

    所用版本 xff1a ubuntu18 xff08 亲测16也成功了 xff09 取消软件密码环 win键打开菜单 gt 搜索pass word gt login选项 gt 右键删除某个密码环 转自 https www cnblogs co
  • 2_3-numpy-cnn-mnist手写数字识别

    numpy实现神经网络系列 工程地址 xff1a https github com yizt numpy neuron network 基础知识 0 1 全连接层 损失函数的反向传播 0 2 1 卷积层的反向传播 单通道 无padding
  • python获取threading线程返回结果

    python获取threading线程返回结果 span class token keyword class span span class token class name MyThread span span class token p
  • ADX的计算方式

    平均趋向指数是衡量趋势的技术工具 xff0c 简称ADX average directional indicator xff0c 它是由韦尔斯 怀尔德在1978年提出 xff0c 与其他技术分析工具不同的是 xff0c ADX并不能判断多空
  • uni app项目中实现vue和html通信

    vue实现 web view 是一个 web 浏览器组件 xff0c 可以用来承载网页的容器 xff0c 会自动铺满整个页面 个人业务 xff08 需要实现一个本地的html文件的内嵌 xff09 xff0c 由于web view是自动铺满
  • uni app实现中英文语言切换

    因为业务需求很多app都是可以多种语言进行切换的 xff0c 以此来方便用户的使用 做语言的切换一定要开发开始的时候就规划好 xff0c 不然确实太麻烦了 xff0c 我是后期开发的语言切换 xff0c 好多个页面都需要进行修改 main
  • uniapp一套代码开发app和微信小程序

    为什么选择uniapp开发 xff1f 为什么选择uniapp进行开发 xff1f 1 uniapp对于独自开发是相当友好的 xff0c 一套代码可以兼容app xff08 安卓 xff0c ios xff09 小程序 xff0c h5等
  • python + selenium的使用 - mac可能出现的问题

    注意服务器部署selenium时 xff0c 代码中一定要添加关闭浏览器驱动的语句 xff08 代码执行结束后不会自动关闭浏览器驱动 xff09 xff0c 否则会导致服务器磁盘被占满 1 安装selenium pip span class
  • 使用Truffle 和 Ganache编译、发布智能合约

    文章目录 Truffle开发框架步骤1 安装Truffle2 查看安装是否成功3 创建没有合约的空工程 xff0c 可以使用 truffle init4 编译Truffle项目的合约truffle compile编译问题 5 构建文件Art
  • 基于Ganache和MetaMask搭建以太坊私有网络

    使用Truffle 和 Ganache 编译 发布智能合约 请参考作者博客https blog csdn net weixin 43958804 article details 109576016 操作步骤 下载ganache https
  • python面试题--统计文件中字母出现的次数

    统计字母出现的次数 fp span class token operator 61 span span class token builtin open span span class token punctuation span span

随机推荐

  • 迁移EFI分区至固态硬盘

    接上回 加装SSD后的第二天 xff0c 我发现原来20s开机的电脑居然变成了30s开机 于是我就开始思考什么问题导致了这个情况 xff0c 根据启动顺序问题 xff0c 我发现可能是安装系统时 xff0c 我没拔下HDD的SATA0接口的
  • go defer,panic,recover详解 go 的异常处理

    转载 https www jianshu com p 63e3d57f285f golang中defer panic recover是很常用的三个特性 xff0c 三者一起使用可以充当其他语言中try catch 的角色 xff0c 而de
  • 重新在虚拟机上安装了centOS7系统

    参考教程 xff1a VMware 安装 Centos7 超详细过程 菜鸟教程
  • centOS安装

    1 安装ImageMagick yum install y ImageMagick 2 安装GhostScript yum install y ghostscript 验证是否安装成功 gs version 3 安装libreoffice
  • 10问10答:你真的了解线程池吗?

    Java开发手册 中强调 xff0c 线程资源必须通过线程池提供 xff0c 而创建线程池必须使用ThreadPoolExecutor 手册主要强调利用线程池避免两个问题 xff0c 一是线程过渡切换 xff0c 二是避免请求过多时造成OO
  • TensorRT 加载模型onnx报错: Error Code 10: Internal Error (Could not find any implementation for node

    1 背景 在TensorRT加载ONNX文件 bert模型 xff09 过程出现如标题所示的错误信息 在相同的代码 xff0c 相同的TensorRT版本 xff0c 在3090 xff08 43 win10 xff09 可以进行正常加载和
  • 【Git】在IDEA拉取master分支到你的开发分支上

    git checkout到master2 git pull xff0c 拉去master最新代码 3 git checkout到你的开发分支 右键项目 选择远程master 确定后如果有冲突 xff0c 则解决冲突即可 弄完最后git pu
  • UNIX环境高级编程-第一章

    1 UNIX体系结构 xff1a 严格意义上说 xff0c 可将操作系统定义为一种软件 xff0c 它控制计算机硬件资源 xff0c 提供程序运行环境 我们通常将这种软件称为内核 xff0c 因为它相对较小 xff0c 而且位于环境的核心
  • AP6275S移植总结

    RK3308B 43 AP6275S移植 在rk3308b平台移植rtl8821cs rlt8821cs是wifi 43 bt一体的模组 xff0c 主要记录下移植过程中需要注意的地方 移植驱动 将rtl8821cs的驱动包复制到rk的SD
  • float类型

    float类型遵循IEEE754标准 xff0c 该标准为32位浮点数规定了二进制表示形式 IEEE754采用二进制的科学计数法来表示浮点数 对于float浮点数 xff0c 用1位表示数字的符号 xff08 浮点数正负性 xff0c 0正
  • 判断点与直线的位置关系

    判断点与直线的位置关系是计算几何里面的一个最基本算法 xff0c 可以使用向量来判断 定义 xff1a 平面上三个点A x1 y1 B x2 y2 C x3 y3 xff0c 判断点C与 A B overr
  • 【知识点总结】大数据技术原理与应用

    大数据技术原理与应用 本文是对 大数据与云计算导论 课程知识点的应试总结 基本涵盖了 大数据技术原理与应用 的重点内容 思维导图由 64 福尔摩东整理 第一章 大数据概述 1 三次信息化浪潮 信息化浪潮发生时间标志解决的问题代表企业第一次浪
  • BlockingQueue

    BlockingQueue 一 阻塞队列基本方法介绍 谈到线程池 xff0c 不得不谈到生产者 消费者模式 xff0c 谈到生产者 消费者 xff0c 就不得不谈到对应的数据结构 xff0c 谈到对应的数据结构不得不言 BlockingQu
  • 【Python爬虫】猫眼电影榜单Top100

    这是一个入门级的Python爬虫 xff0c 结构易于理解 本文对编写此爬虫的全过程进行了讲述 希望对大家的Python爬虫学习有所帮助 一 目标 爬取猫眼电影榜单Top100 xff0c 将数据存入Excel文件中 xff0c 并利用py
  • 【知识点总结】计算机操作系统

    第一章 操作系统引论 操作系统的特征 并发 共享 虚拟 异步 并发和共享是两个最基本的特征 xff0c 二者互为存在条件 1 并发与并行 并发 xff1a 指两个或多个事件在同一时间间隔内发生 这些事件宏观上是同时发生的 xff0c 但微观
  • RD Client 用户账户无效解决办法

    账户密码都正确的情况下 xff0c 在局域网内登录总是显示用户账户无效 查找了微软讨论组 csdn xff0c 使用他们提供的解决办法都未能解决我的问题 xff0c 最终在知乎找见了如下的方法 xff0c 成功连接 打开本地组策略编辑器 计
  • FRP内网穿透 远程桌面的搭建

    一 准备 内容要求操作系统Win10家庭版以上服务器具有公网ip远程软件RD Client 二 软件介绍 1 Win10专业版 企业版 2 RD Client xff08 Microsoft 远程桌面 xff09 主要功能 访问运行Wind
  • 【考研】数据结构复习

    一 线性表 1 线性表的顺序表示 xff08 1 xff09 定义 静态分配 define MaxSize 50 typedef struct ElemType data MaxSize int length SqList void Ini
  • 层板等分衣柜 简单实现

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • 使用spire.doc for java 操作文档(添加段落,动态生成表格,给段落设置字体样式等)

    31 使用spire doc for java 操作文档记录 span class token comment 创建段落 span span class token keyword public span span class token