如何在Powershell中的Excel单元格中读取多行字符串?

时间:2019-03-25 04:49:58

标签: arrays excel powershell

我正在尝试使用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

0 个答案:

没有答案