EPPlus LoadingFromCollection以将Object的toString用于列

时间:2018-08-14 14:51:07

标签: c# asp.net-core asp.net-core-mvc epplus epplus-4

我的问题与EPPlus 4.5.2.1和.LoadFromCollection()方法有关。我在.NET Core 2.1 MVC项目中使用此工具,以从数据库检索数据到模型中,并将其推入Excel文件进​​行下载。

假设我们有一个对象:

namespace ThingsToDo
{
    public class ActivityDate
    {
        DateTime date { get; set; }
        String timeSpan { get; set; }

        public override string ToString()
        {
            return $"{date.ToShortDateString()} {timeSpan}";
        }
    }
}

然后我们有另一个使用此对象的对象(模型):

namespace ThingsToDo
{
    public class ActivityInfo
    {
        public string ActivityName { get; set; }
        public ActivityDate ActivityDate { get; set;}
    }
}

为简便起见,假设List包含对象(所有数据均不可为空)。

如果我做类似的事情:

public IActionResult getExcel()
{
        var pck = new ExcelPackage();

        //Run my model's query
        List<ActivityInformation> model = //See above, assume this list has data in it

        //Create a Worksheet
        var wsToReturn = pck.Workbook.Worksheets.Add("Sheet 1");


        wsToReturn.Cells["A1"].LoadFromCollection(model, true, OfficeOpenXml.Table.TableStyles.Medium9);

        return File(pck.GetAsByteArray(), FILE_TYPE_EXCEL, "Report.xlsx");
}

这将返回: Workbook with Object Namespace qualified names.

我已经阅读了参考文献并仔细阅读了它们的样本(如果您是阅读本文的人,并且看起来很不错),但是似乎无法弄清楚是否有可能将其解析为正确的方法通过其to字符串显示ActivityDate。

还是我被降级为创建日期已被分割的“ ExcelOutput”对象?

我相信这与Question #34209678有关,所以我打赌我不走运!

感谢您的建议和帮助!

为在类中添加“公共”而编辑(实际上,它们被声明为公共,我没有特殊原因省略了它们;可能是懒惰。)

0 个答案:

没有答案