Как удалить большое количество столбцов в excel powershell-ом?

Мне нужно обрабатывать приходящие excel-файлы. Заведомо известно что в них значимых столбцов - 35, не больше (строк - тысячи). Но иногда приходят неясно как формированные файлы в которых столбцов несколько сотен. Соответственно хочу удалить все столбцы правее 35-го. Простым перебором - работает, но очень-очень долго:
$wb = $Excel.Workbooks.Open($ExcelFile)
$ws = $wb.Worksheets.Item(1)
$used = $ws.usedRange
$lastrow = $used.SpecialCells(11).row
$lastcol = $used.SpecialCells(11).column
for ($i = $lastcol; $i -ge 35; $i--) {
  [void]$ws.Columns($i).Delete()
}


Как то можно это ускорить? Пробовал сделать Range и удалить уже его:
$allcol = $ws.Range($ws.Cells.Item(35, 1), $ws.Cells.Item($lastcol,$lastrow))
$allcol.Delete()

Но столбцы не удаляются почему то. ЧЯДНТ? Может какой то еще вариант есть? Заранее спасибо
  • Вопрос задан
  • 464 просмотра
Пригласить эксперта
Ответы на вопрос 1
@azarij
В меру опытный никто
у меня получилось вот таким образом:

$lastusedcolumn = $ws.Cells.item(1,($ws.columns.Count)).end(-4159).column
foreach ($item in ($lastusedcolumn..36)) {
    $item
    $ws.cells.item(1,$item).entirecolumn.delete()
    
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы