使用Epplus 导出Excel

发布时间 2023-06-17 11:05:40作者: luytest

引入包,不赘述。

 

实例化ExcelPackage

 using (var package = new ExcelPackage())

创建sheet对象 sheet1,标题叫 订单明细

var sheet1 = package.Workbook.Worksheets.Add("订单明细");

 第一行设置为标题

                                for (int c = 1; c <= cols.Length; c++)
                                {
                                    sheet1.Cells[1, c].Value = cols[c - 1];
                                    sheet1.Cells[1, c].Style.Fill.PatternType = ExcelFillStyle.Solid;
                                    sheet1.Cells[1, c].Style.Fill.BackgroundColor.SetColor(Color.LightGray);
                                    sheet1.Cells[1, c].Style.Font.Bold= true;
                                    sheet1.Cells[1, c].Style.Font.Size= 12;
                                    sheet1.Column(c).AutoFit();
                                }
                                sheet1.Row(1).Height = 30;
                                sheet1.Row(1).Style.VerticalAlignment = ExcelVerticalAlignment.Center;
                                sheet1.Row(1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
                                sheet1.View.FreezePanes(2, 1);

cols是我定义的标题名称数组

 string[] cols = { "商户名称", "订单号","订单类型","配送方式","下单时间","结算金额"};

循环cols 给sheet1的第一行按数组内容顺序插入值。

.Style 这几个属性都是设置单元格样式,背景浅灰,字体加粗,字号12等等。

sheet1.Column(c).AutoFit() :是设置单元格根据value自动调整宽度。

sheet1.Row(1).Height = 30:设置第一行的高度
sheet1.Row(1).Style.VerticalAlignment = ExcelVerticalAlignment.Center :设置内容纵向居中
sheet1.Row(1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center:设置内容水平居中
sheet1.View.FreezePanes(2, 1) :冻结第一行,也就是当右侧有滚动条可以上下滚动内容时,第一行也就是标题行会跟随滚动

填充数据就不展示了,设置方式跟标题是一样的,根据实际的数据集合(list,datatable,array)等循环给单元格赋值就行。

保存excel文件

              string fileName = "xxxxx.xlsx";
              string outputPath = $"D:\xxxx\xxxx\{fileName}";
              FileInfo outputFile = new FileInfo(outputPath);
              package.SaveAs(outputFile);                    

完成。