使用powershell在excel中输入带有换行符号的字符串

时间:2016-07-13 10:03:30

标签: powershell powershell-v2.0

我有一个字符串str。

$str="abcd_1
      abcd_2
      abcd_3"

首先在for循环中我连接字符串并使用回车符+换行符制作一个完整的Id' s字符串。 在分裂时我只使用新的线条字符。 我在从第二个单元格输入的数据中获得了前面的空格。

for($intRow = $trow ; $intRow -le $maxRow ; $intRow++){

                            $codeName = $currentCode
                            $fin = $codeName + "_" + $i + "`r`n"
                            $finCode=$finCode+$fin


                            $i= $i + 1
                         }



                         $currentSheet.Cells.Item($fRow,$currentCol).Value2  = $finCode



                         $clipboardData = $finCode.Split("`n").TrimStart()
                         $newClipboardData = $clipboardData.Where({$_.TrimStart() -ne ""}).ForEach({$_.TrimStart()})
                         [System.Windows.Forms.Clipboard]::SetText($newClipboardData)



                         $currentSheet.Cells.Item($fRow,$currentCol).Select() | Out-Null
                         $currentSheet.Paste() | Out-Null

2 个答案:

答案 0 :(得分:0)

更加清晰准确。此示例显示如何使用换行符分割字符串。每次写下一行时只需增加$intRow

ForEach($strValue In $str.Split("`n"))
{
    $currentSheet.Cells.Item($intRow,$currentCol).Value2  = $strValue
    $intRow++
}

新守则:

[System.Windows.Forms.Clipboard]::SetText($str.Split("`n"))
$currentSheet.Cells.Item($intRow,$currentCol).Select() | Out-Null
$currentSheet.Paste() | Out-Null

答案 1 :(得分:0)

您可以使用修剪来消除空间。但是使用'r'n拆分并不能给我正确的数据。它返回一行。:

$clipboardData = $str.Split("`n").TrimStart()
$newClipboardData = $clipboardData.Where({$_.TrimStart() -ne ""}).ForEach({$_.TrimStart()})
[System.Windows.Forms.Clipboard]::SetText($newClipboardData)

当我检查值的内容时,它没有任何前导空格,但在excel中粘贴时会显示一个空格。

$newClipboardData | %{ "-$_-" }
-Some Text-
-Some text With spaces  -
-Some text again-