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)
标签:遍历,string,get,c#,WordData,对象,set,props,public From: https://www.cnblogs.com/ZhuMeng-Chao/p/17086229.html