有没有办法从2维数组写入数据到csv,而不在vb.net中使用循环?

时间:2012-03-01 02:17:35

标签: vb.net

我有一个二维数组'allData(100,2) 是否可以将这个二维数组中的值写入csv而不使用循环?

目前,我有一个代码,但它使用Interop。 不幸的是,我只需要使用csv,因为我们的服务器不支持Interop。 这是我使用Interop时的代码:

xlWorkSheet.Range(rangeCell).Resize(checkedOutItems.Count,2).Value = allData

1 个答案:

答案 0 :(得分:1)

不,你必须使用循环来写入值。为什么这是一个问题? Excel互操作也是这样做的,除了它更昂贵 - 你加载了几兆字节的可执行文件以将几百个项目保存到磁盘。如果你自己做,它会更快,更快。代码将是类似的(在C#中,移植到VB.NET应该是微不足道的,但我的VB生锈了:)):

int i;
StringBuilder sbBuffer = new StringBuilder ();

for ( i = 0; i < arr2D.Length; i++ )
{
    sbBuffer.Append ( arr2D[i,0] ).Append ( ',' ).Append ( arr2D[i,1] );
    sbBuffer.AppendLine ();
}

File.WriteAllText ( @"C:\data.csv", sbBuffer.ToString () );

如果你有很多项目,你也可以使用StreamWriter而不是StringBuilder - StringBuilder会将整个输出保留在内存中,直到完成为止。如果您有大量数据,StreamWriter会继续将其写入磁盘,因此您不会使用尽可能多的内存。

我在帖子中遗漏了什么吗?