Fork me on GitHub

.Net NPOI 简单Demo,一看就会

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#region   文件输出
 
public class BasicInfodsa
    {
        public string name;
        public string phone;
    }
 
        List zyData =  new List();
        var zyUserList = BLL_User.getAllZYUserList();
        var zyUserGroup = zyUserList.GroupBy(c => c.AccName.Trim());
        foreach ( var item  in zyUserGroup)
        {
            if (item.Count() > 1)
            {
                foreach ( var subitem  in item)
                {
                    zyData.Add( new BasicInfodsa { name = subitem.AccName, phone = subitem.CardID });
                }
            }
        }
 
        //获得数据
        var Data = zyData;
        //创建一个新的excel文件
        HSSFWorkbook book =  new HSSFWorkbook();
        //创建一个工作区
        ISheet sheet = book.CreateSheet( "sheet1" );
        //创建一行 也就是在sheet1这个工作区创建一行 在NPOI中只有先创建才能后使用
        IRow row = sheet.CreateRow(0);
        for ( int i = 0; i < 5; i++)
        {
            //设置单元格的宽度
            sheet.SetColumnWidth(i, 16 * 156);
        }
        sheet.SetColumnWidth(4, 30 * 156);
        sheet.SetColumnWidth(1, 21 * 156);
        //定义一个样式,迎来设置样式属性
        ICellStyle setborder = book.CreateCellStyle();
 
        //设置单元格上下左右边框线 但是不包括最外面的一层
        setborder.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
        setborder.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
        setborder.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
        setborder.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
 
        //文字水平和垂直对齐方式
        setborder.VerticalAlignment = VerticalAlignment.Center; //垂直居中
        setborder.Alignment = HorizontalAlignment.Center; //水平居中
        setborder.WrapText =  true ; //自动换行
 
        //再定义一个样式,用来设置最上面标题行的样式
        ICellStyle setborderdeth = book.CreateCellStyle();
 
        //设置单元格上下左右边框线 但是不包括最外面的一层
        setborderdeth.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
        setborderdeth.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
        setborderdeth.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
        setborderdeth.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
 
        //定义一个字体样式
        IFont font = book.CreateFont();
        //将字体设为红色
        font.Color = IndexedColors.Red.Index;
        //font.FontHeightInPoints = 17;
        //将定义的font样式给到setborderdeth样式中
        setborderdeth.SetFont(font);
 
        //文字水平和垂直对齐方式
        setborderdeth.VerticalAlignment = VerticalAlignment.Center; //垂直居中
        setborderdeth.Alignment = HorizontalAlignment.Center; //水平居中
        setborderdeth.WrapText =  true ;   //自动换行
 
        //设置第一行单元格的高度为25
        row.HeightInPoints = 25;
        //设置单元格的值
        row.CreateCell(0).SetCellValue( "姓名" );
        //将style属性给到这个单元格
        row.GetCell(0).CellStyle = setborderdeth;
        row.CreateCell(1).SetCellValue( "电话" );
        row.GetCell(1).CellStyle = setborderdeth;
 
        //循环的导出到excel的每一行
        for ( int i = 0; i < Data.Count; i++)
        {
            //每循环一次,就新增一行  索引从0开始 所以第一次循环CreateRow(1) 前面已经创建了标题行为0
            IRow row1 = sheet.CreateRow(i + 1);
            row1.HeightInPoints = 21;
            //给新加的这一行创建第一个单元格,并且给这第一个单元格设置值 以此类推...
            row1.CreateCell(0).SetCellValue(Convert.ToString(Data[i].name));
            //先获取这一行的第一个单元格,再给其设置样式属性 以此类推...
            row1.GetCell(0).CellStyle = setborder;
            row1.CreateCell(1).SetCellValue(Data[i].phone);
            row1.GetCell(1).CellStyle = setborder;
        }
        System.IO.MemoryStream ms =  new System.IO.MemoryStream();
        book.Write(ms);
        ms.Seek(0, SeekOrigin.Begin);
        DateTime dttime = DateTime.Now;
        string datetime = dttime.ToString( "yyyy-MM-dd" );
        string filename =  "一卡通数据.xls" ;
        Response.AddHeader( "Content-Disposition" "attachment; filename=" + filename);
        Response.BinaryWrite(ms.ToArray());
    #endregion

  

posted @   WantRemake  阅读(121)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示