using Infrastructure.Abstructions; using Infrastructure.Word; using NPOI.XWPF.UserModel; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace BackGround.Hangfire.Jobs.Units { public class FireHydrantTableResolver : IWordTableResolver,ITransientDependency { private string[] keys; public FireHydrantTableResolver() { keys = new string[] { "消火栓编号", "形式(地上、地下)", "位置", "管网形式(环状、枝状)", "管网直径", "管网压力","供水单位","负责人","电话","安装日期","变更日期","注销日期" }; } public Dictionary Resolve(XWPFTable table) { var result = new Dictionary(); var cellList = new List(); foreach (XWPFTableRow row in table.Rows) { var rowIndex = table.Rows.IndexOf(row);//获取该循环在List集合中的索引 //3.循环没行中的列 foreach (XWPFTableCell cell in row.GetTableCells()) { cellList.Add(cell); } } foreach (var key in keys) { var cell = cellList.FirstOrDefault(c => c.Paragraphs.FirstOrDefault(p => p.ParagraphText.Trim() == key) != null); if (cell != null) { var index = cellList.IndexOf(cell); if (index <= cellList.Count - 2) { var value = cellList[index + 1]; result.Add(key, value.Paragraphs[0].Text); } } } return result; } } }