有没有一种方法可以更有效或更快速地在excel文件中写入大型数据表?

时间:2018-11-18 12:24:19

标签: c# excel csv datatable console-application

我在处理庞大的数据集方面还很陌生,为此我正在使用C#。现在,我正在处理的数据(是CSV)具有19列和9,831行。将数据写入现有excel文件时,程序需要6分钟才能完成其任务。我正在寻找可以将渲染时间减少到几秒钟的建议或技巧。因此,这是将其写入excel文件的类或代码:

Exception

1 个答案:

答案 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%,但这可能是朝着正确方向迈出的一步。