消防站文档解析
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

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