讀取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預覽: