You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.8 KiB
49 lines
1.8 KiB
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<string, object> Resolve(XWPFTable table) |
|
{ |
|
var result = new Dictionary<string, object>(); |
|
var cellList = new List<XWPFTableCell>(); |
|
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; |
|
} |
|
} |
|
}
|
|
|