Значение равно null при передаче в качестве параметра
Я работаю над чтением из электронной таблицы excel в массовом формате некоторого текста. Когда я делаю что-то вроде следующего, все работает нормально.
Function Read-From-Excel {
Param(
[string]$fileName,
[string]$sheetName="Sheet1"
)
$excelObject = New-Object -ComObject Excel.Application
$excelObject.Visible = $FALSE
$excelBook = $excelObject.Workbooks.Open($fileName)
$excelSheet = $excelBook.Sheets.Item($sheetName)
$intRowMax = ($excelSheet.UsedRange.Rows).count
$col = 1
$row = 1
$headers= @()
While ($TRUE) {
$column = $excelSheet.cells.Item($row, $col).Text
If ($column -eq "") {
Break
}
$headers += $column
$col ++
}
$text = ""
For ($row = 2; $row -le $intRowMax; $row++) {
# Wrapped in another function starting here
$cell = $excelSheet.cells.Item($row, 1).Text
If ($cell.StartsWith("#")) {
$text += "-- {0}`n" -f $cell.substring(1)
} Else {
$c1 = $cell
$c2 = $excelSheet.cells.Item($row, 2).Text -creplace 's+', ''
$c3= $excelSheet.cells.Item($row, 3).Text -creplace 's+', ''
$c4 = $excelSheet.cells.Item($row, 4).Text
$c5 = $excelSheet.cells.Item($row, 5).Text
$text += Format-Row $c1 $c2 $c3 $c4 $c5
}
# Until here
}
Write-Host $headers
Write-Host $text
$excelObject.quit()
}
Когда я заворачиваю внутренний раздел в функцию, однако, я получаю ошибку:
You cannot call a method on a null-valued expression.
At C:UsersdannnnodesktopFormatFromExcel.ps1:311 char:27
+ $cell = $excelSheet.cells.Item <<<< ($row, 1).Text
+ CategoryInfo : InvalidOperation: (Item:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Эта функция выглядит следующим образом
Function _Get-Next-Block-Excel-File {
Param(
[Object[]]$sheet,
[int]$row
)
# This is all the same, except with the name changed to $sheet
}
И исходный код изменил внутреннюю секцию, чтобы она выглядела как
$text += _Get-Next-Block-Excel-File $excelSheet $row
Существует ли специальный способ передачи этого параметра в PowerShell?