Aspose操作表格

            NodeCollection allTables = doc.GetChildNodes(NodeType.Table, true); //拿到所有表格
            Table table = allTables[0] as Table; //拿到第一个表格
           

            bool flag = true;//这是第一行列头标记

            for (int i = 0; i < type_caigouList.Count(); i++)
            {                
                //实体反射值
                var properties = type_caigouList[i].GetType().GetProperties();

                //列头插入
                if (flag)
                {
                    Row FirstRow = (Row)table.Rows[0].Clone(true);
                    //反射获取特性为第一行内容
                    for (int j=0;j< FirstRow.Cells.Count; j++)
                    {
                        //清除原本列中内容
                        FirstRow.Cells[j].RemoveAllChildren();
                        var propertie = properties[j];
                        if (propertie != null && propertie.IsDefined(typeof(PrintNameAttribute), true))//PrintNameAttribute 的特性
                        {
                            PrintNameAttribute attribute = (PrintNameAttribute)propertie.GetCustomAttribute(typeof(PrintNameAttribute), true);
                            if (!attribute.IsEmpty())
                            {

                                Paragraph content = new Paragraph(doc);
                                content.AppendChild(new Run(doc, attribute.Name));
                                //插入内容
                                FirstRow.Cells[j].AppendChild(content);
                            }
                        }

                    }
                    flag = false;
                    //末尾插入
                    table.AppendChild(FirstRow);

                    table.Rows.Insert(i + 2, FirstRow);
                }
                else
                {
                    Row SecondRow = (Row)table.Rows[i].Clone(true);

                    for (int j = 0; j < SecondRow.Cells.Count; j++)
                    {

                        SecondRow.Cells[j].RemoveAllChildren();
                        var propertie = properties[j];
                        if (propertie != null && propertie.IsDefined(typeof(PrintNameAttribute), true))//PrintNameAttribute 的特性
                        {
                            PrintNameAttribute attribute = (PrintNameAttribute)propertie.GetCustomAttribute(typeof(PrintNameAttribute), true);
                            if (!attribute.IsEmpty())
                            {

                                Paragraph content = new Paragraph(doc);
                                content.AppendChild(new Run(doc,  Convert.ToString(propertie.GetValue(type_caigouList[i], null)) ));
                                SecondRow.Cells[j].AppendChild(content);
                            }
                        }

                    }
                    //末尾插入
                    //table.AppendChild(SecondRow);

                    table.Rows.Insert(i+2, SecondRow);
                }
            }

            table.RemoveChild(table.Rows[0]);
            table.RemoveChild(table.Rows[0]);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值