我必须以编程方式将数据导出到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中?
我怀疑这是否可能。我刚刚自学了如何访问房产名称&它的细节,所以我想也许其他事情也可能,但我只是不知道。
感谢
您可以使用PropertyInfo.GetValue
。
(然而,根据规范,您的属性的顺序不能保证与定义顺序相同。因此,为了安全起见,您可能需要订购它们。)
此外,您可以手动创建一个集合,而不是通过反射来获取它们,这样就可以处理订单了。
例如
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);
}