-1

我必须以编程方式将数据导出到 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 中?

我怀疑这是否可能。我只是自学了如何访问属性名称及其详细信息,所以我想也许其他事情也是可能的,但我根本不知道。

谢谢

4

1 回答 1

0

您可以使用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);
}
于 2013-08-24T12:15:51.613 回答