c#遍历一个对象的字段信息

c#遍历对象字段

场景:有一个对象作为导出word段落的数据、每一个字段就代表一个段落,可以对相应段落数据设置样式(字体、颜色、加粗……)

参考文献:(12条消息) C#获取实体类字段信息PropertyInfo,字段名称,字段值,字段属性标签_棉晗榜的博客-CSDN博客_c# t实体获取某个字段的值

1、对象

   public class WordData
    {
        /// <summary>
        /// 教室名称
        /// </summary>
        public string cName { get; set; }
        /// <summary>
        /// 教室编号
        /// </summary>
        public string cId { get; set; }
        /// <summary>
        /// 备注
        /// </summary>
        public string Rank { get; set; }
        /// <summary>
        /// 联系电话
        /// </summary>
        public string Phone { get; set; }
        /// <summary>
        /// 二维码
        /// </summary>
        public FileStream QRStream { get; set; }
    }

 2、获取属性中的段落信息

//获取这个类的字段信息
PropertyInfo[] props = typeof(WordData).GetProperties();//实体的字段列表

 3、遍历对像相应字段(一个字段代表一个段落,一行)做逻辑处理

 FileStream fileStream=null;//二维码  
 string Text = "";//文本
 for (var j = 0; j < props.Count(); j++)
  {
      //如果字段名不是QRStream
      if (props[j].Name != "QRStream")
      {
           Text = props[j].GetValue(w) as string;
      }
      else
      {
              //图片stream
              fileStream = props[j].GetValue(w) as FileStream;
      }
           ……………………  接下来对其做逻辑处理
   }

4、最终效果

数据是这个样子的

string FilePath = System.AppDomain.CurrentDomain.BaseDirectory + "Img";
FilePath = FilePath + "/QR.png";
FileStream fs = new FileStream(FilePath, FileMode.OpenOrCreate, FileAccess.Read);
WordData w = new WordData() { cName= "[房间1]" , cId="14985"+1,Rank= "请扫描二维码进行故障报修。关注公众号,可随时了解当前进度",Phone= "报修热线:14541524124", QRStream=fs};

通过逻辑处理后导出word效果 :(WordData提供的文本和图片stream)

导出word使用NPOI插件,参考博客:.Net Word操作之NPOI - じ逐梦 - 博客园 (cnblogs.com)

 

posted @ 2023-02-02 15:37  じ逐梦  阅读(583)  评论(0)    收藏  举报