我正在尝试使用Powershell脚本读取excel文件中的特定列,并对该列中的数据进行一些文本处理。该列中的每个单元格可能/可能不包含多行数据。
我所做的是循环遍历一个单元格,对于循环的每个单元格,我都将数据存储到here-string中,然后循环遍历此here-string以读取多行中的每一行文字。
我能够读取包含多行数据的单元格中的所有行,但是,当循环到达具有单行数据的单元格时,它不会显示单行数据并以空白显示。我需要一些帮助来确定我的问题。非常感谢,谢谢!
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $false
$Excel.DisplayAlerts = $false
$xlsPath = "C:\Users\csjeemah\Documents\Jeevan\Powershell Scripts\sample.xlsx"
$workbook = $Excel.Workbooks.Open("C:\Users\csjeemah\Documents\Jeevan\Powershell Scripts\sample.xlsx")
$workSheet = $workbook.Sheets.Item(1)
$workSheet.activate()
$worksheet.Columns.Replace("\","/")
$maxRows = (($workSheet.UsedRange.Rows).count) - 1
$sourceCol = 2
$sourceRow = 2
for($souceRow = 1; $sourceRow -lt $maxRows; $sourceRow++){
$sourceData = $workSheet.Cells.Item($sourceRow,$sourceCol).text
$sourceArray = @"
$sourceData
"@ -split "`n" | % {$_.trim() }
$lineCounter = 1
for($src = 0; $src -le $sourceArray.count - 1 ; $src ++){
echo $sourceArray[$src] 'this is line' $lineCounter 'in cell'
$lineCounter = $lineCounter + 1
}
}
$workbook.SaveAs($xlsPath)
$workbook.close($false)
$Excel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Excel)
Remove-Variable Excel