excel - 我希望从 Powershell 更改 Excel 中的数据。

标签 excel powershell

我需要找到数据所在的行,然后复制它和它下面的所有其他行,并将其移动到工作表的顶部。剪切和粘贴会起作用,但我似乎找不到一个允许我选择我需要的所有行的函数。

到目前为止,我已经尝试过了。

$Excel = New-Object -ComObject Excel.Application
$Workbook = $Excel.Workbooks.Open('C:\Users\xx\Test2\TestFile2.xlsx')
$Worksheet = $Workbook.Sheets.Item(1)
$worksheet.Activate()
$Found = $Worksheet.Cells.Find('Last Name')
[char] $col = $found.column + 64
[String] $value = $col + $found.row
$range = $worsheet.Range("$value :A4")

但后来我明白了
You cannot call a method on a null-valued expression.
At line:1 char:1
+ $range = $worsheet.Range("$value :A4")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
     + FullyQualifiedErrorId : InvokeMethodOnNull

我对 Powershell 还很陌生,因此感谢您提供任何帮助

谢谢!

最佳答案

我强烈建议使用 ImportExcel module对于此操作,您可以直接在 PowerShell 中操作对象。假设我们有一个这样的表:

+----------+---------+
| Column1  | Column2 |
+----------+---------+
| Value1   | a       |
| Value2   | b       |
| LastName | c       |
| Value3   | d       |
| Value4   | e       |
+----------+---------+

我们可以做的是将它导入到 PowerShell 对象中,然后在哪一行中找到我们正在寻找的值(在我的例子中是 Column1 -eq 'LastName' ):
$data = Import-Excel .\Book1.xlsx

$i = 0
$data | % {if ($_.Column1 -eq "LastName"){
    $i
    break
  }
  else {
    $i++
  }
}

然后我们必须将所有从顶部开始的行保存到一个变量中,并将从我们刚刚找到的行开始的行保存到另一个变量中:
$above = @()
$thisAndBelow = @()
for ($j = 0; $j -lt $data.length; $j++) {
  if ($j -lt $i) {$above += $data[$j]}
  else {$thisAndBelow += $data[$j]
  }
}

然后把它放在一起并导出到输出文件:
$object = $thisAndBelow + $above
$object | Export-Excel .\Book2.xlsx

正如预期的那样,输出是:
+----------+---------+
| Column1  | Column2 |
+----------+---------+
| LastName | c       |
| Value3   | d       |
| Value4   | e       |
| Value1   | a       |
| Value2   | b       |
+----------+---------+

关于excel - 我希望从 Powershell 更改 Excel 中的数据。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51294011/

相关文章:

powershell - 在 PowerShell 中创建批处理作业

rest - 如何在Powershell字符串中转义 "Quotes"?

PHP | Powershell脚本输出数据

regex - “the regular expression pattern is not valid”,同时用数组替换正则表达式

excel - 如何打印图像?

vba - 无法使用 VBA 粘贴到合并单元格中

excel - 创建zip错误: Namespace method fails on IShellDispatch

excel - LIBNAME 语句 sas 中的错误

excel - "VBA."前缀,例如VBA.Randomize与Randomize,有什么区别?

powershell - 如何通过Powershell永久保存Word选项/自动更正设置?