人间惊鸿宴

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
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);
            }

 

posted on 2025-08-23 10:39  人间惊鸿宴  阅读(5)  评论(0)    收藏  举报