NPOI导出word文档中插入公式总结

news2024/12/23 18:27:32

1. XWPFOMath类

XWPFDocument doc = new XWPFDocument();
//创建新行
XWPFParagraph p = doc.CreateParagraph();
//创建空的公式
XWPFOMath math = p.CreateOMath();

通过XWPFParagraph的扩展方法创建

方法名备注
CreateAcc();创建XWPFAcc类,实现字符在文字上面的类
CreateF();创建XWPFF类,实现除法相关的类
CreateNary();创建XWPFNary类,实现积分相关的内容
CreateRad();创建XWPFRad类,实现根号的操作
CreateRun();创建XWPFSharedRun类,实现添加内容操作
CreateSSub();创建XWPFSSub类,实现构件下标操作
CreateSSup();创建XWPFSSup类,实现上标操作

2. XWPFAcc类

定 义:上标类

AccPr属性

控制上标的内容

代码:

下标的内容通过“Element.CreateRun().SetText(“需要写入的内容”);”来添加

var acc = math.CreateAcc();
acc.AccPr = "i";
acc.Element.CreateRun().SetText("X");

[图片]

3. XWPFF类

定义:创建除法符号

FractionType属性:设置除线的形式是个枚举值

在这里插入图片描述

Denominator属性:设置分母内容

Numerator属性:设置分子内容

代码

XWPFF f = math.CreateF();
f.FractionType = ST_FType.skw;
f.Denominator.CreateRun().SetText("n");
var nary = f.Numerator.CreateNary().SetSumm();
nary.Superscript.CreateRun().SetText("n");
nary.Subscript.CreateRun().SetText("i=1"); 
var ssub = nary.Element.CreateSSub();
ssub.Element.CreateRun().SetText("X");
ssub.Subscript.CreateRun().SetText("i");

在这里插入图片描述

4. XWPFNary类

定义:积分类( ⋀ 、∫、∑、⋃符号)。通过方法来添加

        //
        // 摘要:
        //     Sets ⋀ char
        public XWPFNary SetAnd();
        //
        // 摘要:
        //     Sets ∫ char
        public XWPFNary SetIntegral();
        //
        // 摘要:
        //     Sets ∑ char
        public XWPFNary SetSumm();
        //
        // 摘要:
        //     Sets ⋃ char
        public XWPFNary SetUnion();
       

Superscript属性

添加符号上字符

Subscript属性

定义:添加符号下字符

代码:

XWPFNary nary = f.Numerator.CreateNary().SetSumm();
nary.Superscript.CreateRun().SetText("n");
nary.Subscript.CreateRun().SetText("i=1");

在这里插入图片描述

5. XWPFRad类

定义,实现根号的操作

Degree属性

设置n次方,也可以设置公式

代码:

var rad = math.CreateRad();
rad.Degree.CreateRun().SetText("2");

var f = rad.Element.CreateF();
f.FractionType = ST_FType.noBar;
f.Denominator.CreateRun().SetText("n-1");

var nary = f.Numerator.CreateNary().SetSumm();
nary.Superscript.CreateRun().SetText("n");
nary.Subscript.CreateRun().SetText("i=1");

var ssup = nary.Element.CreateSSup();
ssup.Element.CreateRun().SetText("(");

var ssub = ssup.Element.CreateSSub();
ssub.Element.CreateRun().SetText("X");
ssub.Subscript.CreateRun().SetText("i");
ssup.Element.CreateRun().SetText("-");

var acc = ssup.Element.CreateAcc();
acc.AccPr = "¯";
acc.Element.CreateRun().SetText("X");
ssup.Element.CreateRun().SetText(")");
ssup.Superscript.CreateRun().SetText("2");

在这里插入图片描述

6. XWPFSSub类

设置下标类

Subscript属性

设置下标的内容

Element属性

设置主内容

7. XWPFSSup类

设置上标类

Superscript属性

设置上标内容

Element属性

设置主内容

8. 封装公式类

 public static class FormulaHelpMethod
    {
        /// <summary>
        /// 添加内容
        /// </summary>
        /// <param name="math"></param>
        /// <param name="value"></param>
        public static void Add(this MathContainer math, string value)
        {
            math.CreateRun().SetText(value);
        }
        /// <summary>
        /// 添加上标签内容
        /// </summary>
        /// <param name="math"></param>
        /// <param name="value"></param>
        /// <param name="up"></param>
        /// <returns></returns>
        public static XWPFSSup AddUp(this MathContainer math, string value, string up)
        {
            XWPFSSup sup = math.CreateSSup();
            sup.Superscript.CreateRun().SetText(up);
            sup.Element.CreateRun().SetText(value);
            return sup;
        }
        /// <summary>
        /// 添加下标签内容
        /// </summary>
        /// <param name="math"></param>
        /// <param name="value"></param>
        /// <param name="bottom"></param>
        /// <returns></returns>
        public static XWPFSSub AddButtom(this MathContainer math, string value, string bottom)
        {
            XWPFSSub sub = math.CreateSSub();
            sub.Element.CreateRun().SetText(value);
            sub.Subscript.CreateRun().SetText(bottom);
            return sub;
        }
        /// <summary>
        /// 添加上下标
        /// </summary>
        /// <param name="math"></param>
        /// <param name="value"></param>
        /// <param name="up"></param>
        /// <param name="bottom"></param>
        public static void AddUpButtom(this MathContainer math, string value, string up, string bottom)
        {
            XWPFSSup sup = math.CreateSSup();
            XWPFSSub sub = sup.Element.CreateSSub();
            sup.Superscript.CreateRun().SetText(up);
            sub.Element.CreateRun().SetText(value);
            sub.Subscript.CreateRun().SetText(bottom);
        }
        /// <summary>
        /// 添加特殊符号
        /// </summary>
        /// <param name="math"></param>
        /// <param name="value"></param>
        /// <param name="up"></param>
        /// <param name="bottom"></param>
        /// <param name="addCharacter">是否添加特殊符号,0为不添加,1为⋀,2为∫,3为∑,4为⋃</param>
        /// <returns></returns>
        public static XWPFNary AddNary(this MathContainer math, string value, string up, string bottom, int addCharacter)
        {
            XWPFNary nary = math.CreateNary();
            switch (addCharacter)
            {
                case 0:
                    break;
                case 1:
                    nary = nary.SetAnd();
                    break;
                case 2:
                    nary = nary.SetIntegral();
                    break;
                case 3:
                    nary = nary.SetSumm();
                    break;
                case 4:
                    nary = nary.SetUnion();
                    break;
            }
            nary.Element.CreateRun().SetText(value);
            nary.Superscript.CreateRun().SetText(up);
            nary.Subscript.CreateRun().SetText(bottom);
            return nary;
        }
        /// <summary>
        /// 添加分数内容
        /// </summary>
        /// <param name="math"></param>
        /// <param name="numerator">分子</param>
        /// <param name="denominator">分母</param>
        /// <param name="sT_F"></param>
        /// <returns></returns>
        public static XWPFF AddDivision(this MathContainer math, string numerator, string denominator, ST_FType sT_F)
        {
            XWPFF wPFF = math.CreateF();
            wPFF.FractionType = sT_F;
            wPFF.Denominator.CreateRun().SetText(denominator);
            wPFF.Numerator.CreateRun().SetText(numerator);
            return wPFF;
        }
        /// <summary>
        /// 添加分数内容
        /// </summary>
        /// <param name="math"></param>
        /// <param name="numeratorAction"></param>
        /// <param name="denominator"></param>
        /// <param name="sT_F"></param>
        /// <returns></returns>
        public static XWPFF AddDivision(this MathContainer math,Action<XWPFOMathArg> numeratorAction, string denominator, ST_FType sT_F)
        {
            XWPFF wPFF = math.CreateF();
            wPFF.FractionType = sT_F;
            numeratorAction?.Invoke(wPFF.Numerator);
            wPFF.Denominator.CreateRun().SetText(denominator);
            return wPFF;
        }
        /// <summary>
        /// 添加分数内容
        /// </summary>
        /// <param name="math"></param>
        /// <param name="numerator"></param>
        /// <param name="denominatorAction"></param>
        /// <param name="sT_F"></param>
        /// <returns></returns>
        public static XWPFF AddDivision(this MathContainer math, string numerator, Action<XWPFOMathArg> denominatorAction, ST_FType sT_F)
        {
            XWPFF wPFF = math.CreateF();
            wPFF.FractionType = sT_F;
            denominatorAction?.Invoke(wPFF.Denominator);
            wPFF.Numerator.CreateRun().SetText(numerator);
            return wPFF;
        }
        /// <summary>
        /// 添加分数内容,第一个参数为分子,第二个参数为分母
        /// </summary>
        /// <param name="math"></param>
        /// <param name="numeratorDenominatorAction"></param>
        /// <param name="sT_F"></param>
        /// <returns></returns>
        public static XWPFF AddDivision(this MathContainer math, Action<XWPFOMathArg,XWPFOMathArg> numeratorDenominatorAction, ST_FType sT_F)
        {
            XWPFF wPFF = math.CreateF();
            wPFF.FractionType = sT_F;
            numeratorDenominatorAction?.Invoke(wPFF.Numerator,wPFF.Denominator);
            return wPFF;
        }
        /// <summary>
        /// 添加根号
        /// </summary>
        /// <param name="math"></param>
        /// <param name="value"></param>
        /// <param name="degree"></param>
        /// <returns></returns>
        public static XWPFRad AddRad(this MathContainer math, string value, string degree)
        {
            XWPFRad rad = math.CreateRad();
            rad.Element.CreateRun().SetText(value);
            rad.Degree.CreateRun().SetText(degree);
            return rad;
        }
        /// <summary>
        /// 添加等号
        /// </summary>
        /// <param name="math"></param>
        public static void AddEqual(this MathContainer math)
        {
            math.Add("=");
        }
        /// <summary>
        /// 添加等号
        /// </summary>
        /// <param name="math"></param>
        /// <param name="value"></param>
        public static void AddEqual(this MathContainer math,string value)
        {
            math.Add($"={value}");
        }
        /// <summary>
        /// 添加加号
        /// </summary>
        /// <param name="math"></param>
        public static void AddPlus(this MathContainer math)
        {
            math.Add("+");
        }
        /// <summary>
        /// 添加减号
        /// </summary>
        /// <param name="math"></param>
        public static void AddMinus(this MathContainer math)
        {
            math.Add("-");
        }
        /// <summary>
        /// 添加乘号
        /// </summary>
        /// <param name="math"></param>
        public static void AddMultiply(this MathContainer math)
        {
            math.Add("×");
        }
    }

总结

上面是在项目中使用的代码总结,希望可以帮助到大家~~~

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

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

相关文章

【前端】2.HTML基础知识

文章目录 1. 基本概念1.1 HTML是什么1.2 HTML的作用1.3. 学习导引1.4 开发工具 2. HTML 基础语法2.1 demo2.1.1 HTML 详述2.1.2 HTML标签2.1.3 HTML网页结构2.1.4HTML版本 2.2 常用元素2.3 属性2.4 文本相关语法2.5 链接相关语法2.6 头部相关语法 3. 总结3.1 HTML 基础语法总结…

什么是VLAN?为什么要划分VLAN?

VLAN(Virtual Local Area Network)即虚拟局域网&#xff0c;是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。每个VLAN是一个广播域&#xff0c;VLAN内的主机间可以直接通信&#xff0c;而VLAN间则不能直接互通。这样&#xff0c;广播报文就被限制在一个VLAN内。 一、为…

如何简单快速搭建自己的云对象存储服务(OSS)

简单来说&#xff0c;其实我们只需要有一台服务器&#xff0c;利用服务器的各种资源&#xff0c;搭配其它厂商开发的软件&#xff0c;就能很轻易拥有自己的云对象存储服务。不需要在阿里云上花钱买什么服务&#xff0c;甚至还能自己给别人提供服务&#xff0c;真的是太爽了。 云…

五一创作【Android构建篇】MakeFile语法

前言 对于一个看不懂Makefile构建文件规则的人来说&#xff0c;这个Makefile语法和shell语法是真不一样&#xff0c;但是又引用了部分shell语法&#xff0c;可以说是shell语法的子类&#xff0c;Makefile语法继承了它。 和shell语法不一样&#xff0c;这个更难一点&#xff0…

云原生架构的发展历史

目录 1 单机小型机时代2 垂直拆分3 集群化负载均衡架构4 服务化改造架构5 服务治理6 微服务时代7 服务网格新时期 &#xff08;service mesh&#xff09;7.1 背景7.2 SideCar7.3 Linkerd7.4 istio7.5 什么是服务网格7.6 什么是Service Mesh7.7 CNCF云原生组织发展和介绍7.8 国内…

C++11--线程库的认识

目录 thread 线程的构造方式 相关成员函数 join与detach 线程传参 互斥量mutex mutex Locks 原子性操作库 条件变量 thread 线程的构造方式 它是不支持拷贝构造&#xff0c;赋值的&#xff0c;但是可以支持移动构造&#xff0c;移动赋值。还可以直接创建无参的对象。 …

存储器(一)

目录 一、存储器的分类 1.按介质分类 1.1半导体存储器 1.2磁表面存储器 1.3光盘存储器 2.按存取方式分类 2.1随机存储器(RAM) 2.2只读存储器(ROM) 2.3串行访问存储器 3.按在计算机中的作用分类 ​编辑 二、存储器的层次结构 1.存储器的主要性能指标: 2.存储系统体系…

模式识别是什么意思

模式识别是一种通过分析数据特征、模型、算法等手段&#xff0c;从数据中寻找规律、发现隐藏的模式或结构的技术。通常是从某些对象、场景、过程等方面入手&#xff0c;对数据进行处理&#xff0c;以便于对这些对象、场景、过程进行分类、检测、识别、分割、分析等目的。 模式…

HJ20 密码验证合格程序

写在前面&#xff1a; 题目链接&#xff1a;牛客网 华为机试题 HJ20 密码验证合格程序 题目难度&#xff1a;中等 编程语言&#xff1a;C 一、题目描述 描述 密码要求: 1.长度超过8位 2.包括大小写字母.数字.其它符号,以上四种至少三种 &#xff08;注&#xff1a;其他符号不…

死信队列

死信队列 死信的概念 先从概念解释上搞清楚这个定义&#xff0c;死信&#xff0c;顾名思义就是无法被消费的消息&#xff0c;字面意思可以这样理解&#xff0c;一般来说&#xff0c;producer 将消息投递到 broker 或者直接到queue 里了&#xff0c;consumer 从 queue 取出消息…

[Pandas] 构建DataFrame数据框

DataFrame是二维数据结构&#xff0c;数据以行和列的形式排列 构建DataFrame最基本的定义格式如下 df pd.DataFrame(dataNone, indexNone, columnsNone) 参数说明 data: 具体数据 index: 行索引&#xff0c;如果没有指定&#xff0c;会自动生成RangeIndex(0,1,2,...,n) colu…

mongoose使用详细 -- 如何通过mongoose搭建服务器

前言 授人以鱼不如授人以渔&#xff0c;这篇文章详细介绍了&#xff0c;对于一个从来没有听说过mongoose的小菜鸟如何快速了解和上手mongoose 其他一些开源库可以借助类似的方法进行学习 提前需要准备的工具 1.官网文档 Mongoose :: Documentation 官网提供了很多例子讲解&am…

[Pandas] 查看DataFrame的常用属性

导入数据 import pandas as pddf pd.DataFrame([[L123,A,0,123],[L456,A,1,456],[L437,C,0,789],[L112,B,1,741],[L211,A,0,852],[L985,B,1,963]],columns[Material,Level,Passing,LT]) df 1.dtypes: 查看DataFrame中各列的数据类型 df.dtypes会返回每个字段的数据类型及Da…

C++练级之初级:第六篇

类和对象入门级&#xff1a;第六篇 1.类的引入2.类的定义2.1类的访问限定符2.2类的封装2.3类的实例化 3.如何计算类或者对象的大小4.this指针 总结 我们知道&#xff0c;C在C语言的基础上引入了对象的概念&#xff0c;那么从本篇开始进入类和对象&#xff1b; 1.类的引入 &…

【JavaEE】_1.多线程(1)

目录 1.操作系统 2. 进程 3. CPU分配——进程调度 3.1 操作系统对进程的管理 3.2 PCB的属性 3.2.1 基础属性 3.2.2 实现进程调度的属性 4. 内存分配——内存管理 4.1 虚拟地址空间 4.2 进程间通信 5. 线程 5.1 线程的概念 5.2 创建与使用多线程 5.2.1 方式1&a…

【数据结构】八大排序(一)

&#x1f61b;作者&#xff1a;日出等日落 &#x1f4d8; 专栏&#xff1a;数据结构 珍惜自己的时间&#xff0c;利用好每一份每一秒。做事不放过没一个细节&#xff0c;小心谨慎&#xff0c;细致&#xff0c;能够做到这些&#xff0c;还有什么是不可能的呢? 目录 ​编辑 ✔…

【刷题之路Ⅱ】LeetCode 61. 旋转链表

【刷题之路Ⅱ】LeetCode 61. 旋转链表 一、题目描述二、解题1、方法1——移动部分链表1.1、思路分析1.2、代码实现 2、方法1——闭合为环2.1、思路分析2.2、代码实现 一、题目描述 原题连接&#xff1a; 61. 旋转链表 题目描述&#xff1a; 给你一个链表的头节点 head &#x…

【Python | matplotlib】matplotlib.cm的理解以及举例说明

文章目录 一、模块介绍二、颜色举例 一、模块介绍 matplotlib.cm是Matplotlib中的一个模块&#xff0c;它提供了一组用于处理颜色映射&#xff08;colormap&#xff09;的函数和类。颜色映射是一种将数值映射到颜色的方法&#xff0c;常用于制作热力图、等值线图、散点图等。 …

软件工程实验:原型设计

目录 前言实验目的实验要求实验过程系统原型绘制生成html代码 总结 前言 本次实验的主题是原型设计&#xff0c;即根据用户需求和系统功能&#xff0c;设计一个简单的软件原型&#xff0c;展示系统的界面和交互方式。原型设计是软件工程中的一种重要技术&#xff0c;它可以帮助…

深入探索PyTorch中的自动微分原理及梯度计算方法

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…