gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 23:53:44 25 4
gpt4 key购买 nike

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

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

$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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com