我必须以编程方式将数据导出到Excel。我有一个有几个属性的类。我想知道是否可以使用循环检索所有属性的值。例如:
public class SqueezeProperties
{
public int WidthField { get; set; }
public string Width_unit { get; set; }
public int ResPressure { get; set; }
public int DensityField { get; set; }
......
}
写入excel时,我编码为:
t = typeof(SqueezeProperties);
foreach (PropertyInfo field in t.GetProperties(BindingFlags.Public | BindingFlags.Instance))
oSheet.Cells[r, c++] = field.Name;
现在要输入值,有什么方法可以迭代并找到可以访问的所有属性的值,并将它们存储在excel中?
我怀疑是否有可能。我只是教自己如何访问属性名称&它的细节,所以我想也许另一件事也可能,我根本就没有意识到它。
由于
答案 0 :(得分:0)
您可以使用PropertyInfo.GetValue
。
(但是根据规范,您的属性的顺序不能保证与定义顺序相同。所以为了安全起见,您可能需要订购它们。)
也可以手动创建一个集合,而不是通过反射获取它们,这样就可以处理订单了。
e.g。
var properties = new Expression<Func<SqueezeProperties, object>>[]
{
o => o.WidthField,
o => o.Width_unit,
//...
};
foreach (var exp in properties)
{
var mem = (MemberExpression)exp.Body;
var prop = (PropertyInfo)mem.Member;
oSheet.Cells[r, c++] = prop.GetValue(squeezePropertiesInstance, null);
}