首页 新闻 会员 周边

C# 实现excel表格的表头自动生成

0
[已解决问题] 解决于 2022-09-20 13:15


如何在生成表头的时候顺便将表格中的数据设置为数值格式的数据呢

。LANGYUAN。的主页 。LANGYUAN。 | 初学一级 | 园豆:136
提问于:2022-09-19 18:31
< >
分享
最佳答案
0

免费的话,NPOI算不错的

奖励园豆:5
会长 | 专家六级 |园豆:12401 | 2022-09-20 09:16

大佬你好,NPOI可以将表头列出来吗

。LANGYUAN。 | 园豆:136 (初学一级) | 2022-09-20 09:16

如何方便列出并且可以将数据依次放在表格下呢

。LANGYUAN。 | 园豆:136 (初学一级) | 2022-09-20 09:20

//通过反射得到需要导出的属性
Type orderExcel = typeof(OrderToExcel);
PropertyInfo[] ps = orderExcel.GetProperties();
string[] title = new string[] {
"序号",
"生产时间" ,
"订单号",
"业务员",
"工程名称",
"建筑单位",
"施工部位",
"产品信息",
"特殊要求",
"方量(M3)",
"下单时间",
"联系人",
"联系电话",
"备注",
};
//添加行头
NPOI.SS.UserModel.IRow rowHeader = sheet1.CreateRow(1);

       //公共样式:加边框
       NPOI.SS.UserModel.ICellStyle style = hssfworkbook.CreateCellStyle();
       style.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
       style.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
       style.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
       style.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
       style.Alignment = HorizontalAlignment.Center;

       NPOI.SS.UserModel.ICellStyle styleHeader = hssfworkbook.CreateCellStyle();
       styleHeader.CloneStyleFrom(style);//克隆公共的样式
       styleHeader.Alignment = HorizontalAlignment.Center;//单元格水平居中
       IFont fontHeader = hssfworkbook.CreateFont();//新建一个字体样式对象
       fontHeader.Boldweight = short.MaxValue;//设置字体加粗样式
       styleHeader.SetFont(fontHeader);//使用SetFont方法将字体样式添加到单元格样式中


       for (int i = 0; i < ps.Length + 1; i++)
       {
           var cellHeard = rowHeader.CreateCell(i);
           cellHeard.CellStyle = styleHeader;
           cellHeard.SetCellValue(title[i]);
       }

       if (list != null)
       {
           //通过序列号,得到需要导出的字段
           List<OrderToExcel> listExcel = list.ToObjectList<Order, OrderToExcel>();
           //保存列集合的属性信息数组
           PropertyInfo[] oProps = null;
           for (int i = 0; i < listExcel.Count; i++)
           {
               NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + 2);

               var cellNum = rowtemp.CreateCell(0, CellType.Numeric);
               cellNum.CellStyle = style;
               cellNum.SetCellValue(i + 1);
               oProps = ((Type)listExcel[i].GetType()).GetProperties();
               for (int j = 0; j < oProps.Length; j++)
               {
                   Type colType = oProps[j].PropertyType;//得到属性的类型
                   var value = oProps[j].GetValue(listExcel[i]);//得到属性的值
                   var cell = rowtemp.CreateCell(j + 1);
                   cell.CellStyle = style;
                   cell.SetCellValue(value == null ? "" : value.ToString());
               }
           }

       }

这个可以实现吗

。LANGYUAN。 | 园豆:136 (初学一级) | 2022-09-20 09:23

可以噢谢谢大佬的提醒

。LANGYUAN。 | 园豆:136 (初学一级) | 2022-09-20 09:42

@。LANGYUAN。: 不用谢

会长 | 园豆:12401 (专家六级) | 2022-09-20 10:19

@。LANGYUAN。: 还要更强的:spire,收费的。

会长 | 园豆:12401 (专家六级) | 2022-09-20 10:20

@会长:spire没有用过这

。LANGYUAN。 | 园豆:136 (初学一级) | 2022-09-20 10:45
其他回答(1)
0

如果是经常需要做报表,强力推荐phthon。用过都说好!

智客工坊 | 园豆:1855 (小虾三级) | 2022-09-19 22:40

谢谢大佬这个很有帮助哦

支持(0) 反对(0) 。LANGYUAN。 | 园豆:136 (初学一级) | 2022-09-20 10:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册