ClosedXML.Excel 关于转化sub与sup标签为上标下标的操作

.NET ClosedXML.Excel 关于转化sub与sup标签为上标下标的操作

  1. 上标和下标常见于一些数学公式和化学表达式中,有时候我们需要将这些数学公式和化学式插入到Excel中,因此就涉及到如何在Excel中插入上标和下标。本文将介绍如何使用C#和ClosedXML.Excel
    组件在Excel文档中插入上标和下标。

  2. 在使用以下代码前,需要引用ClosedXML.Excel.dll到工程中,并添加命名空间

using ClosedXML.Excel;
using System.IO;
using System;
 
        private string SUB_START = "<sub>";
        private string SUB_END = "</sub>";
        private string SUP_START = "<sup>";
        private string SUP_END = "</sup>";
        public void ExeclRichText(string s,IXLCell cell)
        {
            if (containSubSup(s))
            {
                if ((s.IndexOf(SUB_START) < s.IndexOf(SUP_START) || s.IndexOf(SUP_START) < 0) && s.IndexOf(SUB_START) > -1)
                {
                    //表示先有sub_start标签
                    if (s.IndexOf(SUB_START) > 0)
                    {
                        cell.RichText.AddText(s.Substring(0, s.IndexOf(SUB_START)));
                    }
                    int n1, n2;
                    n1 = s.IndexOf(SUB_START) + SUB_START.Length;   //开始位置  
                    n2 = s.IndexOf(SUB_END);               //结束位置    
                    cell.RichText.AddText(s.Substring(n1, n2 - n1)).SetVerticalAlignment(XLFontVerticalTextAlignmentValues.Subscript);   //取搜索的条数,用结束的位置-开始的位置,并返回    
                    s = s.Substring(n2 + SUB_END.Length);
                    ExeclRichText(s, cell);
                }
                if ((s.IndexOf(SUB_START) > s.IndexOf(SUP_START) || s.IndexOf(SUB_START) < 0) && s.IndexOf(SUP_START) > -1)
                {
                    //表示先有sub_start标签
                    if (s.IndexOf(SUP_START) > 0)
                    {
                        cell.RichText.AddText(s.Substring(0, s.IndexOf(SUP_START)));
                    }
                    int n1, n2;
                    n1 = s.IndexOf(SUP_START) + SUP_START.Length;   //开始位置  
                    n2 = s.IndexOf(SUP_END);               //结束位置    
                    cell.RichText.AddText(s.Substring(n1, n2 - n1)).SetVerticalAlignment(XLFontVerticalTextAlignmentValues.Subscript);   //取搜索的条数,用结束的位置-开始的位置,并返回    
                    s = s.Substring(n2 + SUP_END.Length);
                    ExeclRichText(s, cell);
                }
            }
            else
            {
                cell.RichText.AddText(s);
            }
        }
        public bool containSubSup(string s)
        {
            return (s.Contains(SUB_START) && s.Contains(SUB_END)) || (s.Contains(SUP_START) && s.Contains(SUP_END));
        }

调用方法

 ExeclRichText("NH<sub>3</sub>.H<sub>2</sub>O", ws.Cell("A7"));


效果
在这里插入图片描述

https://github.com/ClosedXML/ClosedXML

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值