在PowerShell中将二维数组写入Excel范围对象的Value2属性

我是PowerShell的新手,似乎无法弄清楚为什么在下面的代码中的第一个方法不起作用,而第二种方法(注释掉)。

我试图将数据库logging集的结果写入Excel文件,所以我需要一个dynamic可扩展的数组。 我知道如何做到这一点与第一种types的数组,但不是与第二种types。

我的问题将得到解决,如果:

  • 你知道如何dynamic扩展第二种types的数组
    编辑:如这里提到http://powershell.com/cs/blogs/tips/archive/2008/12/05/multidimensional-arrays.aspx这是不可能的。
  • 知道如何将第一个types的数组写入范围
  • 编辑:或者,你知道一个有效的方法来将第一个types的数组转换为第二个types。

代码:

#need this to work around bug if you have a non us-locale and English excel: http://support.microsoft.com/default.aspx?scid=kb;en-us;320369 [System.Threading.Thread]::CurrentThread.CurrentCulture = "en-US" # This doesn't work $values = @(('test1','test2'),('test3','test4')) # This works <# $values = New-Object 'object[,]' 2,2 $values[0,0] = 'test1' $values[0,1] = 'test2' $values[1,0] = 'test3' $values[1,1] = 'test4' #> $excel = New-Object -ComObject Excel.Application $excel.Visible = $False $xls_workbook = $excel.Workbooks.Add() $range = $xls_workbook.sheets.item(1).Range("A1:B2") $range.Value2 = $values $xls_workbook.SaveAs($MyInvocation.MyCommand.Definition.Replace($MyInvocation.MyCommand.Name, "") + "test.xlsx") $excel.Quit() 

当我得到这两个variables的types:

 $values1.GetType() $values2.GetType() 

这是我得到的:

 IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True Object[] System.Array True True Object[,] System.Array 

所以$ values1是一维的,$ values2是二维的。 这里有一个相关的问题:

Powershellmultidimensional array