我在处理庞大的数据集方面还很陌生,为此我正在使用C#。现在,我正在处理的数据(是CSV)具有19列和9,831行。将数据写入现有excel文件时,程序需要6分钟才能完成其任务。我正在寻找可以将渲染时间减少到几秒钟的建议或技巧。因此,这是将其写入excel文件的类或代码:
Exception
答案 0 :(得分:1)
过去,我已经处理了几种方法。尤其是从SQL源中使用DataReader时,总是要跳数,跳数和跳数,而这与使用Excel玩得好又快。
Excel确实很喜欢2维数组。过去我对DataTable
所做的工作将其转换为2维数组,然后一次将该数组转储到电子表格中。您仍在遍历DataTable
中的每一行/列,但是C#很快。
string[,] data = new string[dt.Rows.Count, dt.Columns.Count];
int i = 0;
foreach (DataRow row in dt.Rows)
{
int j = 0;
foreach (DataColumn col in dt.Columns)
{
data[i,j++] = row[col].ToString();
}
i++;
}
//dump the whole array to the range
x.Value = data
还有其他一些狡猾的方法,可以通过写一个用逗号分隔的行的文件(尽管我会使用tab使其更加友好),然后打开该文件,但这看起来更加麻烦。 Check out some interesting answers here
虽然我还没有尝试过,但是您可能还有些运气converting that datatable to an array using Linq
。
也许是这样的:
x.Value = dt.AsEnumerable().Select(row => row.ItemArray).ToArray()
我不确定这是100%,但这可能是朝着正确方向迈出的一步。