【发布时间】:2020-10-10 19:37:24
【问题描述】:
我正在尝试使用 C# open-xml SDK 从 word 文档中提取所有文本,并且我想存储每个段落中的样式属性和 innerText 数据,然后存储段落内的每个运行(最终表格也是如此)。
{
"paragraphs":
[
{
"innerText": "",
"runs": [
{
"runProperties": {},
"innerText": ""
}
],
"paragraphProperties": {}
}
],
"tables":
[
{
}
]
}
这是所需的结构。
我来自 python 背景,使用 python dict 执行此操作会很容易,因为 dict 中的键值没有严格的类型。但我几乎不知道如何在 C# 中解决这个问题。
static void Main(string[] args)
{
string fileName = @"<path to file>";
using (WordprocessingDocument myDoc = WordprocessingDocument.Open(fileName, true))
{
IEnumerable<Paragraph> paragraphList = myDoc.MainDocumentPart.Document.Body.Elements().Where(c => c is Paragraph).Cast<Paragraph>();
foreach (Paragraph p in paragraphList)
{
string paragraphInnerText = p.InnerText;
IEnumerable<Run> runList = p.ChildElements.Where(c => c is Run).Cast<Run>();
foreach (Run r in runList)
{
string runInnerText = r.InnerText;
IEnumerable<RunProperties> runProperties = r.ChildElements.Where(c => c is RunProperties).Cast<RunProperties>();
Console.WriteLine("Getting Run Data.");
}
IEnumerable<ParagraphProperties> paragraphPropertiesList = p.ChildElements.Where(r => r is ParagraphProperties).Cast<ParagraphProperties>();
}
}
Console.WriteLine("All done. Press a key.");
}
这是我到目前为止提出的代码,有一些帮助。
关于如何以 json 格式存储它的任何想法,或者我应该如何去做? 提前致谢! :)
【问题讨论】:
标签: c# ms-word openxml-sdk text-extraction