我必须将数据导出到excel。列的宽度定义为规格。宽度必须与导出到excel时定义的宽度完全相同。
我想定义使用Width作为模型属性的数据属性。
[AttributeUsage(AttributeTargets.Property, Inherited = false)]
internal class ColumnWidthAttribute : System.Attribute
{
private int _width;
public ColumnWidthAttribute(int width)
{
_width = width;
}
public virtual int Width
{
get
{
return _width;
}
}
}
模型类:
[DisplayName("First Name")]
[ColumnWidth(12)]
public string FirstName { get; set; }
要导出到excel的代码。
using (var excelFile = new ExcelPackage())
{
excelFile.Workbook.Properties.Title = "Bulk Upload";
var worksheet = excelFile.Workbook.Worksheets.Add("Sheet1");
worksheet.Cells["A1"]
.LoadFromCollection(Collection: items, PrintHeaders: true);
response = excelFile.GetAsByteArray();
}
在上面的代码中,我想遍历集合并根据属性中定义的数据属性添加工作表宽度。您能指导我如何遍历data属性并提供工作表的宽度吗?
例如,在First name
中,我想显示列的长度仅包含12个字符(无论数据库提供的长度如何),宽度必须与数据注释中定义的一样。我的规格如下所示:
Position Length Field
1-12 12 First Name
13-21 9 Last Name
22-27 8 DOB
我当前获得的输出: