前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C# dotnet 使用 OpenXml 解析 Word 文件

C# dotnet 使用 OpenXml 解析 Word 文件

作者头像
林德熙
修改2020-09-10 11:38:25
2.4K0
修改2020-09-10 11:38:25
举报
文章被收录于专栏:林德熙的博客

本文聊的 Word 是 docx 格式,这个格式遵循 ECAM 376 全球标准,使用的格式是 OpenXML 格式,在 2013 微软开源了 OpenXml 解析库。这个库里面包含了海量代码,可以使用 MB 计算的代码量,通过这个解析库,咱可以使用几行代码完成对 Word 文件的解析,从文件到内存模型

本文通过一个简单的 WPF 程序告诉大家如何解析,这个简单的 WPF 程序简单到仅一个拖放功能,将 Word 文件拖入应用,就可以自动解析 Word 里面的内容

先新建一个简单的 Word 文件

然后新建一个 WPF 程序,在这个程序里面添加简单的界面

代码语言:javascript
复制
    <Grid>
        <Border Background="Gray" AllowDrop="True" DragEnter="UIElement_OnDragEnter"></Border>
    </Grid>

在 WPF 中通过设置 AllowDrop=”True” 就可以让控件支持接收拖放的文件

接着通过 NuGet 安装 Openxml 库,这个库支持跨平台。我新建的是 WPF 的 .NET Core 版本,此时可以在 csproj 添加下面代码进行安装

代码语言:javascript
复制
  <ItemGroup>
    <PackageReference Include="DocumentFormat.OpenXml" Version="2.11.3" />
  </ItemGroup>

这个版本的 DocumentFormat.OpenXml 库包含了我的垃圾代码,这是一个在 GitHub 上开源的库,所有的小伙伴都可以参与开发

在 WPF 的后台代码添加 UIElement_OnDragEnter 方法,在这个方法里面可以使用下面代码拿到拖放的文件

代码语言:javascript
复制
        private void UIElement_OnDragEnter(object sender, DragEventArgs e)
        {
            e.Handled = true;
            var fileList = (string[]) e.Data.GetData("FileDrop");

        }

在解析 Word 文档,可以使用下面代码就可以输出 Word 文档里面的内容

代码语言:javascript
复制
            using (FileStream fs = new FileStream(fileList[0], FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                using (var doc = WordprocessingDocument.Open(fs, false))
                {
                    var mainDocumentPart = doc.MainDocumentPart;
                    var body = mainDocumentPart.Document.Body;
                    Console.WriteLine(body.InnerText);
                }
            }

可以看到代码非常简单,但是如果想要将整个 Word 的文档的内容解析出来,这个就复杂一些

代码放在 github 欢迎小伙伴访问

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档