域名注册的网站有哪些app制作需要哪些技术
2026/1/11 4:48:08 网站建设 项目流程
域名注册的网站有哪些,app制作需要哪些技术,自媒体怎么赚钱,郑州营销型网站建设哪家好docx格式了解 docx 文件是 Microsoft Office Word 使用的基于 XML 的文件格式#xff0c;Open XML。Open XML 格式使用 zip 压缩技术来存储文档#xff0c;从而节省潜在的成本。 在打开文件时#xff0c;Office程序会自动对文件进行解压。 在保存文件时#xff0c;会再次对…docx格式了解docx 文件是 Microsoft Office Word 使用的基于 XML 的文件格式Open XML。Open XML 格式使用 zip 压缩技术来存储文档从而节省潜在的成本。 在打开文件时Office程序会自动对文件进行解压。 在保存文件时会再次对文件自动进行压缩。 比如可以把任意docxpptx文件后缀改为.zip可以看到压缩包中有多个xml格式文件和图片素材。pptxZip微软官方提供了Open XML SDK 库来处理符合 Office Open XML 文件格式规范的文档。 Office Open XML 文件格式规范是一个开放的、国际的 ECMA-376、第 5 版 和 ISO/IEC 29500 标准。Open XML SDK 简化了操作 Open XML 包和包中基础 Open XML 架构元素的任务。 Open XML SDK 封装开发人员在 Open XML 包上执行的许多常见任务因此只需几行代码即可执行复杂的操作。因此我们首选使用Open XML SDK来解析docx文件不需要安装任何office软件且完美支持aot编译。二 文件解析与文本提取首先需要在项目里去Nuget安装OpenXml, 以下示例中的版本是。DocumentFormat.OpenXml(3.3.0), Net9。2.1 docx格式文本提取docx格式文件对应的操作类是WordprocessingDocument, 需要用静态方法来实例化 using var doc WordprocessingDocument.Open(filePath,isEditable: false)此时OpenXml已经帮我们把xml对象都转成具体类型了。Document: 文档的根元素包含了文档的主体内容Body 元素**: 位于 Document 元素中包含了文档的主体部分。如果是纯文本Document.innerText 或 Body.innerText可以直接提取出所有字符串内容但是其中表格文本是连在一起即没有任何分隔符的。因此最好还是考虑对内部元素进行遍历。2.2 OpenXmlElement对象遍历如果是提取文本可以在文档的Body.Elements中遍历OpenXmlElement。在方法doc.body.ElementsT()中T表示继承OpenXmlElement的泛型。我们需要关注的类型主要有Paragraph: 段落可直接获取文本Table、TableRow、TableCell: 表格、表行、单元格需要再次遍历单元格的段落获取文本SdtElement: 控件中的显示文本文本框控件、下拉菜单控件需要遍历文本框的段落获取文本。2.4 其他OpenXmlElement对象其他OpenXmlElement对象我们可以通过检视对象的的ChildElements找到包含感兴趣文本的类型然后获取。OpenXmlElement2.3 批注提取批注内容通常存储在 CommentsPart 中而不是直接存储在文档的主体部分。因此我们需要遍历doc.MainDocumentPart.WordprocessingCommentsPart.Comments容器。foreach (var p in wordDocument?.MainDocumentPart.WordprocessingCommentsPart.Comments){if (!string.IsNullOrWhiteSpace(p.InnerText)){sb.AppendLine(p.InnerText);}}2.4 最小实现的代码具体代码如下:using DocumentFormat.OpenXml.Packaging;using DocumentFormat.OpenXml.Wordprocessing;using System.Text;var text ExtractText(d:\reference.docx);Console.Write(text);static StringBuilder ExtractText(string filePath){var sb new StringBuilder();using (WordprocessingDocument wordDocument WordprocessingDocument.Open(filePath, isEditable: false)){Body? body wordDocument?.MainDocumentPart?.Document?.Body;if (body ! null){foreach (var p in body.ElementsParagraph()){if (!string.IsNullOrWhiteSpace(p.InnerText)){sb.AppendLine(p.InnerText);}}foreach (var p in wordDocument?.MainDocumentPart.WordprocessingCommentsPart.Comments){if (!string.IsNullOrWhiteSpace(p.InnerText)){sb.AppendLine(p.InnerText);}}foreach (Table table in body.ElementsTable()){foreach (TableRow row in table.ElementsTableRow()){foreach (TableCell cell in row.ElementsTableCell()){foreach (Paragraph p in cell.ElementsParagraph()){if (!string.IsNullOrWhiteSpace(p.InnerText)){sb.AppendLine(p.InnerText);}}}}}foreach (var sdt in body.ElementsSdtElement()){foreach (Paragraph p in sdt.DescendantsParagraph()){if (!string.IsNullOrWhiteSpace(p.InnerText)){sb.AppendLine(p.InnerText);}}}}wordDocument.Dispose();}return sb;}以上项目AOT发布后得到的Exe也就19.5MB启动速度很快。基于进程的调用与通信可以方便为其他程序调用从而快速提供docx文本解析能力。三 最后本文分享了在docx格式文件中提取文本过程。对于如pptx、xlsx等offce格式提取文本的操作也是类似的但会因文档结构会与docx有较大不同后续再给大家分享。如果你对本文建议或想法欢迎随时交流。请关注我们的公众号萤火初芒以后会和大家分享更多有趣内容一起学习交流进步。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询