上一篇
C如何高效提取Word文档中的全部表格?代码实战解析
- 行业动态
- 2025-05-13
- 1
本文介绍使用C#读取Word文档内表格的两种方法,通过Microsoft.Office.Interop.Word或Open XML SDK库实现,详细演示文档解析、表格遍历及内容提取过程,适用于自动化报表处理等场景,提供完整代码示例与关键API说明。
在C#中提取Word文档中的表格数据是处理办公自动化、数据分析或文档管理时的常见需求,本文将提供一套完整的代码实现方案,基于Microsoft Open XML SDK(官方推荐库)完成操作,确保高效性与兼容性,以下是具体步骤与代码示例:
环境准备
安装NuGet包
在Visual Studio中安装以下NuGet包:Install-Package DocumentFormat.OpenXml Install-Package System.IO.Packaging
引用命名空间
using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Wordprocessing; using System.Collections.Generic;
核心代码实现
public List<Table> GetAllTablesFromWord(string filePath) { List<Table> tables = new List<Table>(); // 打开Word文档(支持.docx格式) using (WordprocessingDocument doc = WordprocessingDocument.Open(filePath, false)) { // 获取文档主体 Body body = doc.MainDocumentPart?.Document.Body; if (body != null) { // 遍历所有子元素,筛选出表格对象 foreach (var element in body.Elements()) { if (element is Table table) { tables.Add(table); } } } } return tables; }
代码解析
文件读取与安全操作
- 使用
using
语句确保文档资源释放,避免内存泄漏。 WordprocessingDocument.Open
方法中第二个参数false
表示以只读模式打开文件,防止意外修改。
- 使用
表格遍历逻辑
- Word文档的正文内容存储在
MainDocumentPart.Document.Body
中。 - 通过遍历
Body.Elements()
并过滤Table
类型对象,精准定位所有表格。
- Word文档的正文内容存储在
返回值与扩展性
- 返回
List<Table>
集合,用户可后续操作表格内容(如读取单元格数据、修改样式等)。
- 返回
异常处理增强
添加文件校验与错误捕获,提升代码健壮性:
public List<Table> GetAllTablesSafely(string filePath) { try { if (!File.Exists(filePath)) throw new FileNotFoundException("Word文件不存在"); if (Path.GetExtension(filePath).ToLower() != ".docx") throw new ArgumentException("仅支持.docx格式"); return GetAllTablesFromWord(filePath); } catch (Exception ex) { // 记录日志或抛出自定义异常 Console.WriteLine($"读取失败:{ex.Message}"); return new List<Table>(); } }
典型应用场景
- 数据批量导出
将表格内容导出至Excel或数据库。 - 文档自动化检查
校验表格格式是否符合规范,分析**
提取表格中的关键字段进行统计分析。
注意事项
- 兼容性:此方案仅支持
.docx
格式(Office 2007及以上版本)。 - 性能优化:处理大型文档时建议异步操作,避免界面卡顿。
- 读取:若需获取表格内文本,可通过遍历
TableRow
和TableCell
实现:foreach (TableRow row in table.Elements<TableRow>()) { foreach (TableCell cell in row.Elements<TableCell>()) { string cellText = cell.InnerText; } }
引用说明
本文代码基于Microsoft Open XML SDK官方文档实现,确保了代码的权威性与可维护性。