ClosedXML.Excel 關於轉化sub與sup標籤為上標下標的操作
阿新 • • 發佈:2021-01-26
.NET ClosedXML.Excel 關於轉化sub與sup標籤為上標下標的操作
-
上標和下標常見於一些數學公式和化學表示式中,有時候我們需要將這些數學公式和化學式插入到Excel中,因此就涉及到如何在Excel中插入上標和下標。本文將介紹如何使用C#和ClosedXML.Excel
元件在Excel文件中插入上標和下標。 -
在使用以下程式碼前,需要引用Spire.Xls.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