我有一个 Excel 数据表,我正在尝试用它来操作数据。结果之一是应清除一个单元格并根据需要将其复制/粘贴(或剪切/粘贴)到另一个单元格中。
下面是我用来操作工作表的代码:
在本例中,我尝试将名为 Target 的列合并到 Destination
$SomeSheet = "C:\Some\Path\lorem.xlsx"
$MasterDBSheetName = "Database"
$MasterDBSheet = Import-Excel -Path $MasterDBPath -WorksheetName $MasterDBSheetName
foreach ($dbRow in $MasterDBSheet) {
$row_target = $dbRow.'Target"
$row_destination = $dbRow.'Destination'
$merge = $row_target + " " + $row_destination
$dbRow.'Target' = $null
$dbRow."Destination' = $merge
}
$MasterDBSheet | Export-Excel -Path $MasterDBPath -WorksheetName $MasterDBSheetName
数据正在合并到每行的“目标”中,但尽管设置为
$null
或""
,Target
的原始数据仍然在同一列中,即使它应该被清除。
如果我使用
—ClearWorksheet
,我已经设法清除所有内容,但我希望至少保留第一行的格式。
假设您知道
Target
列的列索引是什么,您可以尝试使用 Set-ExcelColumn
将 -Value
设置为 null
:
$SomeSheet = 'C:\Some\Path\lorem.xlsx'
$MasterDBSheetName = 'Database'
$pkg = Open-ExcelPackage -Path $SomeSheet
$content = Import-Excel -ExcelPackage $pkg -WorksheetName $MasterDBSheetName
foreach ($dbRow in $content) {
$dbRow.Destination = $dbRow.Target + ' ' + $dbRow.Destination
$dbRow.Target = $null
}
# here you set the value of the desired column to null
$setExcelColumnSplat = @{
ExcelPackage = $pkg
WorksheetName = $MasterDBSheetName
# assuming `Destination` is the first column
Column = 1
# assuming the data starts on row 1
StartRow = 1
Value = $null
}
Set-ExcelColumn @setExcelColumnSplat
# then export the updated worksheet
$MasterDBSheet | Export-Excel -ExcelPackage $pkg -WorksheetName $MasterDBSheetName