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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions