我有一个二维数组'allData(100,2) 是否可以将这个二维数组中的值写入csv而不使用循环?
目前,我有一个代码,但它使用Interop。 不幸的是,我只需要使用csv,因为我们的服务器不支持Interop。 这是我使用Interop时的代码:
xlWorkSheet.Range(rangeCell).Resize(checkedOutItems.Count,2).Value = allData
答案 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会继续将其写入磁盘,因此您不会使用尽可能多的内存。
我在帖子中遗漏了什么吗?