|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|