Skip to content

写了一个动态导出字段的方法,最后设置的属性没有带出来,这是哪里出的问题 #606

@xuhf124066

Description

@xuhf124066
    `/// <summary>
    /// 根据字段导出Excel[动态导出]
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="fields"></param>
    /// <param name="list"></param>
    /// <param name="fileName"></param>
    /// <returns></returns>
    /// <exception cref="Exception"></exception>
    public async Task<string> ExportActity<T>(string fields, List<T> list, string fileName) where T : class, new()
    {
        IExporter exporter = new ExcelExporter();
        var expandoObjectList = new List<ExpandoObject>(list.Count);
        var propertyInfoList = new List<PropertyInfo>();
        var fieldsAfterSplit = fields.Split(',');
        foreach (var field in fieldsAfterSplit)
        {
            var propertyName = field.Trim();
            var propertyInfo = typeof(T).GetProperty(propertyName);

            if (propertyInfo == null)
            {
                throw new Exception($"Property: {propertyName} 没有找到:{typeof(T)}");
            }
            propertyInfoList.Add(propertyInfo);
        }
        foreach (var person in list)
        {
            var shapedObj = new ExpandoObject();

            foreach (var propertyInfo in propertyInfoList)
            {
                var propertyValue = propertyInfo.GetValue(person);
                ((IDictionary<string, object>)shapedObj).Add(propertyInfo.Name, propertyValue);
            }
            expandoObjectList.Add(shapedObj);
        }

        string pathFile = Path.Combine(Directory.GetCurrentDirectory(), fileName);
        var result = await exporter.ExportAsByteArray<ExpandoObject>(expandoObjectList);
        File.WriteAllBytes(pathFile, result);
        //文件上传OSS
        string ossPath = await _oSSHelper.Upload(fileName, pathFile);
        return ossPath;
    }

`

Image

`

[ExcelExporter(Name = "用户信息_123", TableStyle = TableStyles.Light12,HeaderFontSize = 14, FontSize = 13,AutoFitAllColumn = true)]
public class userInfo
{
[Display(Name = "系统编码")]
[ExporterHeader(IsIgnore = true)]
public string? id { get; set; }

 /// <summary>
 /// 用户名称
 /// </summary>
 [Display(Name = "用户名称")]
 [ExporterHeader(DisplayName = "用户名称", AutoCenterColumn = true, IsBold = true)]
 public string? user_name { get; set; }

 /// <summary>
 /// 用户编码
 /// </summary>
 [Display(Name = "用户编码")]
 [ExporterHeader(DisplayName = "用户编码", AutoCenterColumn = true, IsBold = true)]
 public string? user_code { get; set; }

 /// <summary>
 /// 密码
 /// </summary>
 [Display(Name = "密码")]
 public string? pass_word { get; set; }

 /// <summary>
 /// 性别
 /// </summary>
 [ExporterHeader(DisplayName = "性别", AutoCenterColumn = true, IsBold = true)]
 public string? sex { get; set; }

 /// <summary>
 /// 头像
 /// </summary>
 public string? atvatar_url { get; set; }

 /// <summary>
 /// 生日
 /// </summary>
 [ExporterHeader(DisplayName = "生日", AutoCenterColumn = true, IsBold = true)]
 public string? birthday { get; set; }

 /// <summary>
 /// 地址
 /// </summary>
 public string? address { get; set; }

 /// <summary>
 /// 手机号码
 /// </summary>
 [ExporterHeader(DisplayName = "手机号码", AutoCenterColumn = true, IsBold = true)]
 public string? phone { get; set; }

 /// <summary>
 /// 备注
 /// </summary>
 [ExporterHeader(DisplayName = "备注", AutoCenterColumn = true, IsBold = true)]
 public string? remark { get; set; }

 /// <summary>
 /// 创建时间
 /// </summary>
 public DateTime? create_date { get; set; } = DateTime.Now;

 /// <summary>
 /// 创建人
 /// </summary>
 public string? create_user { get; set; } = "system";

 /// <summary>
 /// 更新日期
 /// </summary>
 public DateTime? modify_date { get; set; }

 /// <summary>
 /// 更新人
 /// </summary>
 public string? modify_user { get; set; }

}
`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions