将IQueryable集合导出到Excel

我有一个巨大的IQueryable,我想直接导出到Excel数据转储,我将如何做到这一点?

我试图把它放到一个GridView中,然后从那里导出,如果我只使用一大块数据,那么这个工作就行,但是如果我使用整个IQueryable的话,什么都不会发生。

这是一个4k行的表,每行有70列左右。

编辑:如果更容易,CSV文件也可以!

为什么不直接写文件? 在IQueryable上使用foreach ,并逐行写出一个CSV文件。

CSV可能不是最好的解决scheme。 我一直使用非常大的数据集并使用类似于此的function。 我将假设它是IQueryable它也是IEnumerable。 这里是示例代码,你喜欢做什么。 如果分隔符是“,”那么它将输出一个CSV,如果分隔符是“\ t”,你将输出一个Excel可读文件。 无论采用哪种方法,在运行此方法输出数据之前,都需要执行类似的操作,以输出包含列标题的单行标题。

 //This is changed slightly from my actual code but it should give you an idea of what to do //tickStorage contains a dictionary named MessageData and the key is the column name //Obviously tickStorage is what is being directly mapped to my listView component private void OutputItems(StreamWriter writer, int startIndex, int endIndex, String delimiter) { endIndex = endIndex < tickStorage.Count ? endIndex : tickStorage.Count; for (Int32 i = startIndex; i < endIndex; i++) { IEnumerator<Columns> fields = listView.ColumnsInDisplayOrder.GetEnumerator(); fields.MoveNext(); writer.Write((tickStorage[i].MessageData[fields.Current.Text]).Trim()); while (fields.MoveNext()) { writer.Write(delimiter + (tickStorage[i].MessageData[fields.Current.Text]).Trim()); } writer.WriteLine(); } }