我有一个巨大的IQueryable,我想直接导出到Excel进行数据转储,我该怎么做?
我试图把它放到GridView中并从那里导出,如果我只使用一大块数据就可以工作,但是如果我使用整个IQueryable,则没有任何反应。
这是一个包含4k行的表,每行有70个左右的列。
编辑:如果更容易,CSV文件也会很好!
答案 0 :(得分:2)
为什么不直接写文件?在foreach
上使用IQueryable
,然后逐行写出CSV文件。
答案 1 :(得分:1)
CSV可能不是最佳解决方案。我一直使用非常大的数据集并使用类似于此的函数。我将假设它是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();
}
}