动态列表和 EPPlus LoadFromCollection

List of dynamic and EPPlus LoadFromCollection

我有通过调用 api 获得的动态对象列表。现在,我需要使用

加载它的 EPPlus
List<dynamic> listOfDynamicObjects = Get();
worksheet.Cells.LoadFromCollection(listOfDynamicObjects,...

现在我收到 column out of range 异常。有没有办法加载动态对象?列表来自 Dapper。

更新:我用 DataTable 代替了 List,它起作用了。

从数据库加载的行不是动态的或任意的,它们具有与数据一起返回的非常严格的架构。您可以使用 Dapper 的 ExecuteDataReader 和 EPPlus 的 LoadFromDataReader 而不是通过 dynamic 并丢失类型信息:

using(var con=new SqlConnection(someConnectionString))
using(var reader=con.ExecuteReader(query))
{
    sheet.Cells["A1"].LoadFromDataReader(reader);
}

这样您就可以避免两次缓存数据 - 一次在 DataTable 或 List 中,一次在 Excel 包中