-
-
Notifications
You must be signed in to change notification settings - Fork 496
Open
Description
`/// <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;
}
`
`
[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
Labels
No labels