私は PowerShell を初めて使用します。以下のコードの最初の方法が機能しないのに、2 番目の方法 (コメント アウト) が機能する理由がわかりません。
データベース レコードセットの結果を Excel ファイルに書き込もうとしているので、動的に拡張可能な配列が必要です。最初のタイプの配列でそれを行う方法は知っていますが、2番目のタイプでは知りません。
次の場合、私の問題は解決します。
- 2 番目のタイプの配列を動的に拡張する方法を知ってい
ます。 - 最初のタイプの配列を範囲に書き込む方法を知っている
- 編集:または、最初のタイプの配列を2番目のタイプに変換する効率的な方法を知っています。
コード:
#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()