C# 如何从docx文件中获取一个单词的样式?
我可以获得段落的风格,但我不知道如何获得一个单词的风格 我在分析一篇课文,我要得到所有格式化的单词 示例。 输入: Stack Overflow是一家私人网站,是Stack Exchange网络的旗舰网站,由杰夫·阿特伍德和乔尔·斯波尔斯基于2008年创建。它被创建为比早期问答网站(如专家交流)更开放的替代网站。该网站的名称是通过投票选出的 2008年4月,阿特伍德流行编程博客《编写恐怖代码》的读者 输出: 堆栈溢出,杰夫·阿特伍德,乔尔·斯波尔斯基,专家交换,编码恐怖 其他:C# 如何从docx文件中获取一个单词的样式?,c#,.net,openxml,docx,C#,.net,Openxml,Docx,我可以获得段落的风格,但我不知道如何获得一个单词的风格 我在分析一篇课文,我要得到所有格式化的单词 示例。 输入: Stack Overflow是一家私人网站,是Stack Exchange网络的旗舰网站,由杰夫·阿特伍德和乔尔·斯波尔斯基于2008年创建。它被创建为比早期问答网站(如专家交流)更开放的替代网站。该网站的名称是通过投票选出的 2008年4月,阿特伍德流行编程博客《编写恐怖代码》的读者 输出: 堆栈溢出,杰夫·阿特伍德,乔尔·斯波尔斯基,专家交换,编码恐怖 其他: 我不会用它来转换
我不会用它来转换成HTML。我只需要得到风格,并用它来估计这个词的重要性。如果这个词是粗体的,这意味着这个词更重要。你用什么来获得
段落的风格?
然而,为了检索该信息,您需要解析应用于目标Run元素(包含word的元素)的样式
如果样式只是直接在Run
元素(作为其子元素RunProperties
元素)上定义,那么这可能很简单,但如果不是,则需要通过检查应用的样式、基于样式的样式等来解决样式问题。简言之,这是一个有点复杂的主题,对于一个基本的介绍,我建议阅读
一个简单而直接的解决方案是使用一个可以为您解析样式的库,例如:
此外,您可能还想退房。我解决了这个问题,因此:
使用Microsoft.Office.Interop.Word;
使用制度;
使用System.Collections.Generic;
使用系统文本;
...
Application wordApp=新应用程序();
对象未命中=System.Reflection.Missing.Value;
对象只读=真;
对象文件名=“…\Test.docx”;
Document doc=wordApp.Documents.Open(ref文件名,ref未命中,ref未命中
只读,…);
List boldList=新列表();
foreach(文档范围中的范围)
foreach(范围为rng.WORD)
如果(rngWord.Bold!=0)
粗体列表.Add(rngWord.Text);
foreach(粗体列表中的变量项)
控制台写入线(项目);
Console.ReadKey();
wordApp.Quit();
您是在寻找html还是docx提取?他们甚至一点都不一样。。。查看Aspose.Words和HTML敏捷包,具体取决于您正在做什么。RandomUs1r,我不打算使用它来转换为HTML。我只需要得到风格,并用它来估计这个词的重要性。如果这个词是粗体的,这意味着这个词更重要。谢谢,它解决了我的问题。但是GemBox.Document
在免费试用中只能阅读20段。所以我找了更多,找到了这个。我已经用Microsoft.Office.Interop.Word解决了我的问题。
DocumentModel document = DocumentModel.Load("Sample.docx");
foreach (Run run in document.GetChildElements(true, ElementType.Run))
if (run.CharacterFormat.Bold)
Console.WriteLine(run.Text);
using Microsoft.Office.Interop.Word;
using System;
using System.Collections.Generic;
using System.Text;
...
Application wordApp = new Application();
object miss = System.Reflection.Missing.Value;
object readOnly = true;
object filename = "...\Test.docx";
Document doc = wordApp.Documents.Open(ref filename, ref miss, ref
readOnly,...);
List<string> boldList = new List<string>();
foreach (Range rng in doc.StoryRanges)
foreach (Range rngWord in rng.Words)
if (rngWord.Bold != 0)
boldList.Add(rngWord.Text);
foreach (var item in boldList)
Console.WriteLine(item);
Console.ReadKey();
wordApp.Quit();