Util.ToSpreadsheet() - add support for dynamic types and DataRows

Since dynamic types can be dumped perfectly fine, would it be possible to add support for these cases:

Example 1:

Util.ToSpreadsheet(ExecuteQueryDynamic("SELECT * FROM sys.tables")).Open();

Current result 1:

Example 2:

var dt = new DataTable();
dt.Columns.Add("Foo");
dt.Columns.Add("Bar");
dt.Rows.Add(dt.NewRow());
dt.Rows.Add(dt.NewRow());

Util.ToSpreadsheet(dt.Rows.Cast<DataRow>()).Open();

Current result 2:

Example 3:

var obj = new ExpandoObject();
((IDictionary<string, object>)obj)["Foo"] = "Bar";

var list = new List<dynamic>() { obj };

Util.ToSpreadsheet(list).Open();

Current result 3:

Workaround to get the actual data with column names: Dump(true) then export to Excel via grid.