我想要从Excel工作表中提取多个数据。我得到的错误是索引超出了数组的范围。
$Data = Read-Host "Enter the count of Datastore"
$ds = "-sm-"
$Range1 = $Worksheetx1.Range("B1","B1048570")
$Search1 = $Range1.find($ds)
$r = $Search1.row
for ($i=1; $i -le $Data; $i++)
{
$Datastore = @()
$Datastore[$i] = $Worksheetx1.Cells.Item($r, 2).Value2
$r = $r+1
}
$Total_Datastore = $Datastore1 + $Datastore2 + $Datastore3 + $Datastore4
$Total_Datastore
答案 0 :(得分:0)
问题出在以下代码中:
for ($i=1; $i -le $Data; $i++)
{
$Datastore = @()
$Datastore[$i] = $Worksheetx1.Cells.Item($r, 2).Value2
$r = $r+1
}
您正在创建一个空数组$Datastore = @()
,并尝试将数据存储在第二个索引中($i=1
,数组索引从零开始,因此从索引2开始)。这将导致IndexOutOfRangeException
。
$Total_Datastore = $Datastore1 + $Datastore2 + $Datastore3 + $Datastore4
也没有意义,因为$Datastore1
(2,3和4)未在任何地方定义。
尝试:
# Only integers are allowed
$Data = [int] (Read-Host "Enter the count of Datastore")
$ds = "-sm-"
$Range1 = $Worksheetx1.Range("B1","B1048570")
$Search1 = $Range1.find($ds)
$r = $Search1.row
$Datastore = @()
for ($i=1; $i -le $Data; $i++) {
# Todo: Check if $r is in a valid range or not !!!
$Datastore += $Worksheetx1.Cells.Item($r, 2).Value2
$r = $r+1
}
$Datastore