NPOI处理Word文本中上下角标

简介: 原文:NPOI处理Word文本中上下角标读取Word文档,并将文本转成html标签,后面发现,经常有带上下角标的内容,于是一并处理了。 核心在于对XWPFRun对象中Subscript属性的处理。 1 /// 2 /// 读取Word,并识别文本中的...
原文: NPOI处理Word文本中上下角标

读取Word文档,并将文本转成html标签,后面发现,经常有带上下角标的内容,于是一并处理了。

核心在于对XWPFRun对象中Subscript属性的处理。

 1         /// <summary>
 2         /// 读取Word,并识别文本中的上下角标
 3         /// </summary>
 4         /// <param name="fileName"></param>
 5         /// <returns></returns>
 6         public static string ReadWordTextExWithSubscript(string fileName)
 7         {
 8 
 9             string fileText = string.Empty;
10             StringBuilder sbFileText = new StringBuilder();
11 
12             #region 打开文档
13             XWPFDocument document = null;
14             try
15             {
16                 using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read))
17                 {
18                     document = new XWPFDocument(file);
19                 }
20             }
21             catch (Exception e)
22             {
23                 throw e;
24             }
25             #endregion
26             //正文段落
27             foreach (XWPFParagraph paragraph in document.Paragraphs)
28             {
29                 //获取段楼中的句列表
30                 IList<XWPFRun> runsLists = paragraph.Runs;
31 
32                 sbFileText.Append("<p>");
33                 foreach (XWPFRun run in runsLists)
34                 {
35                     switch (run.Subscript)
36                     {
37                         case VerticalAlign.BASELINE:
38                             sbFileText.Append(run.Text);
39                             break;
40                         //上角标
41                         case VerticalAlign.SUPERSCRIPT:
42                             sbFileText.Append("<sup>" + run.Text + "</sup>");
43                             break;
44                         //下角标
45                         case VerticalAlign.SUBSCRIPT:
46                             sbFileText.Append("<sub>" + run.Text + "</sub>");
47                             break;
48                         default:
49                             sbFileText.Append(run.Text);
50                             break;
51                     }
52                     
53                 }
54                 sbFileText.AppendLine("</p>");
55             }
56             fileText = sbFileText.ToString();
57 
58             return fileText;
59         }

Word文档:

输出:

<p>测试<sup>上</sup><sub>下</sub>ok。</p>
<p>CO<sub>2</sub></p>
<p>面积约6000km<sup>2</sup></p>

Html预览:

 

目录
相关文章
|
5月前
|
开发框架 前端开发 JavaScript
利用Aspose.Word对Word文件添加印章处理以及实现业务数据的替换处理
利用Aspose.Word对Word文件添加印章处理以及实现业务数据的替换处理
|
API
Apose.word控件获取书签中的内容并复制到一个新的word文档中
Apose.word控件获取书签中的内容并复制到一个新的word文档中
457 0
利用Spire实现对Word模板的指定文字替换(文字、图片、表格)
利用Spire实现对Word模板的指定文字替换(文字、图片、表格)
193 0
|
Linux Windows
aspose将word转pdf时乱码,或者出现小方框问题
aspose将word转pdf时乱码,或者出现小方框问题
1153 0
aspose将word转pdf时乱码,或者出现小方框问题
Word写作 | 如何在Word中把图片铺满整个页面
只要在 Word 中设置图片布局选项的文字环绕,调整为衬于文字下方、浮于文字上方或者中间居中等样式(除【嵌入型】以外的其他形式),然后就可以任意移动放大将整张图片铺满整个页面。
358 0
Word - Word 文档如何切换简体字和繁体字?
Word - Word 文档如何切换简体字和繁体字?
163 0
Word - Word 文档如何切换简体字和繁体字?
Word - 为何在 Word 中打字时未到行尾就自动换行?
Word - 为何在 Word 中打字时未到行尾就自动换行?
856 0
Word - 为何在 Word 中打字时未到行尾就自动换行?