现有数据单元格未从 Excel 工作表中清除

问题描述 投票:0回答:1

我有一个 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
,我已经设法清除所有内容,但我希望至少保留第一行的格式。

excel powershell
1个回答
0
投票

假设您知道

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
© www.soinside.com 2019 - 2024. All rights reserved.