У меня есть лист Excel с количеством столбцов и строк, мне нужно удалить все столбцы, кроме одного, и удалить все строки, кроме предопределенного (есть другой лист Excel с одним столбцом и данными (в строках), которые должны быть Я сделал первое, а именно удалил все столбцы, кроме, но я смог сделать это только с номером столбца, и я хочу сделать это с именем заголовка, то есть «Название продукта», поскольку номер столбца может измениться с другими листами. Также хочу сделать то же самое с строками, чтобы я мог сравнить данные строк из моего ссылочного файла execl.xlsx и удалить тот, который такой же.
$file = "C:\TE.xlsx" # here goes the path and name of the excel file.
$ColumnsToKeep = 4 # Specify the column numbers to delete.
$excel = New-Object -comobject Excel.Application # Creating object of excel in powershell.
$excel.DisplayAlerts = $False
$excel.visible = $False
$workbook = $excel.Workbooks.Open($file)
$sheet = $workbook.Sheets.Item(1) # Referring to first sheet.
$maxColumns = $sheet.UsedRange.Columns.Count
$ColumnsToRemove = Compare-Object $ColumnsToKeep (1..$maxColumns) | Where-Object{$_.SideIndicator -eq "=>"} | Select-Object -ExpandProperty InputObject
0..($ColumnsToRemove.Count - 1) | %{$ColumnsToRemove[$_] = $ColumnsToRemove[$_] - $_}
$ColumnsToRemove | ForEach-Object{
[void]$sheet.Cells.Item(1,$_).EntireColumn.Delete()
}
$workbook.SaveAs("C:\data1.XLSX")
$workbook.Close($true)
$excel.Quit()
[void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
Remove-Variable excel