Epplus:如何使“LoadFromCollection”在模型中使用[DisplayFormat()]属性

时间:2015-12-10 19:01:53

标签: c# asp.net-mvc excel epplus

我有一个ActionResult(在MVC 5网站中)成功使用 Epplus 将数据集导出到Excel文档。

在ActionResult代码块中,我使用这样的代码将列格式化为短日期。在没有此代码的情况下,日期列显示为int值。

// format date columns as date
worksheet.Column(6).Style.Numberformat.Format =
    DateTimeFormatInfo.CurrentInfo.ShortDatePattern;

但是,在模型中,我已将此定义为属性。它在View页面上运行良好,但不会将列格式化为短日期 - 因此,上面显示的代码。

[Column(TypeName = "date")]
[DisplayName("Exit Date")]
**[DisplayFormat(DataFormatString = "{0:d}")]**
public DateTime ExitDate { get; set; }

为了提供更多上下文,我从一个集合中加载我的工作表。

worksheet.Cells["A5"].LoadFromCollection(Collection: exportQuery, PrintHeaders: true);

有没有办法可以扩展LoadFromCollection,以便工作表不仅可以加载Collection内容,还可以加载模型中存在的格式属性?收集“DisplayName”属性,有没有办法收集“DisplayFormat”属性而无需编写单独的代码?

1 个答案:

答案 0 :(得分:4)

遗憾的是,

EPPlus 未对LoadFromCollection实施支持。

该库是开源的,因此您可以在codeplex上找到public String getAuthorFullName(String title) { for (Book authorName : inventory) { if (authorName.getTitle() != null && authorName.getTitle().equals(title)) { return authorName.getAuthor().getName().getFullName(); } } return null; } 及其重载的完整实现

回答你的问题:我担心你必须为此编写单独的代码。