List<string> xbhs = listZL.Select(s => s.XBH).Distinct().ToList();
foreach (string xbh in xbhs)
{
List<ZL> zls = listZL.Where(s => s.XBH.Equals(xbh)).ToList();
Workbook wb = new Workbook();
Worksheet ws = wb.Worksheets[0];
#region 写入表头及字段名
ws.Cells[0, 0].Value = "注 记";
for (int i = 0; i < listCol.Count; i++)
{
ws.Cells[1, i].Value = listCol[i];
}
#endregion
#region 设置表头样式
Style style = wb.CreateStyle();
style.HorizontalAlignment = TextAlignmentType.Center;
style.VerticalAlignment = TextAlignmentType.Center;
style.Font.Name = "宋体";
style.Font.Size = 16;
style.Font.IsBold = true;
StyleFlag flag = new StyleFlag();
flag.HorizontalAlignment = true;
flag.VerticalAlignment = true;
flag.Font = true;
Range range = ws.Cells.CreateRange("A1", "J1");
range.ApplyStyle(style, flag);
#endregion
#region 设置正文样式
Style style1 = wb.CreateStyle();
style1.HorizontalAlignment = TextAlignmentType.Center;
style1.VerticalAlignment = TextAlignmentType.Center;
style1.IsTextWrapped = true;
style1.Font.Name = "宋体";
style1.Font.Size = 10;
style1.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;
style1.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin;
style1.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin;
style1.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin;
// 可选:设置边框颜色
style1.Borders[BorderType.LeftBorder].Color = Color.Black;
style1.Borders[BorderType.RightBorder].Color = Color.Black;
style1.Borders[BorderType.TopBorder].Color = Color.Black;
style1.Borders[BorderType.BottomBorder].Color = Color.Black;
StyleFlag flag1 = new StyleFlag();
flag1.HorizontalAlignment = true;
flag1.VerticalAlignment = true;
flag1.WrapText = true;
flag1.Borders = true;
flag1.FontBold = true;
Range range1 = ws.Cells.CreateRange("A2", string.Format("J{0}", zls.Count + 3));
range1.ApplyStyle(style1, flag1);
#endregion
#region 设置行高
for (int i = 0; i < zls.Count+3; i++)
{
ws.Cells.SetRowHeight(i, 25);
}
#endregion
#region 写入数据
for (int i = 0; i < zls.Count; i++)
{
ZL item = zls[i];
ws.Cells[i + 3, 3].Value = item.TGND;
ws.Cells[i + 3, 4].Value = item.XBH;
ws.Cells[i + 3, 5].Value = item.MJ;
ws.Cells[i + 3, 6].Value = item.DL;
ws.Cells[i + 3, 7].Value = item.LZ;
ws.Cells[i + 3, 8].Value = item.SZ;
ws.Cells[i + 3, 9].Value = item.CCXZ;
}
ws.Cells[2, 0].Value = "镇\r\n安\r\n县";
ws.Cells[2, 1].Value = string.Join("\r\n",zls.First().ZHEN.ToCharArray());
ws.Cells[2, 2].Value = string.Join("\r\n", zls.First().CUN.ToCharArray());
ws.Cells[2, 4].Value = "小计";
ws.Cells[2, 5].Value = listZL
.Where(s=>s.XBH.Equals(xbh))
.Sum(s => s.MJ);
#endregion
#region 合并单元格
ws.Cells.Merge(0, 0, 1, 10);
ws.Cells.Merge(2, 0, zls.Count+1, 1);
ws.Cells.Merge(2, 1, zls.Count + 1, 1);
ws.Cells.Merge(2, 2, zls.Count + 1, 1);
#endregion
ZL firstItem = zls.First();
string outFilePath = string.Format("{0}\\配置文件\\{1}{2}{3}_{4}.xls", OutPath, firstItem.ZHEN, firstItem.CUN, firstItem.XBH,zls.Count);
Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outFilePath));
wb.Save(outFilePath);
}