Автоматическая генерация значений столбцов в листе Excel с помощью команд PowerShell

powershell powershell-2.0 excel-interop

655 просмотра

1 ответ

67 Репутация автора

У меня есть лист Excel, в котором мне нужно обновить значения столбца, такие как ID, с 10-й строки на 45-ю строку. У меня есть смешанный идентификатор "abcd_10", который должен быть расширен до "abcd_45". Каковы команды, чтобы сделать это вместо использования цикла for. Потому что цикл for тратит на это много времени, потому что он снова и снова указывает на ячейку и занимает много времени. Я использую этот код, пожалуйста, скажите мне, что в нем не так.

$codeName = $currentCode
$finCode = $codeName + "_" + $i
$currentSheet.Cells.Item($intRow, $currentCol).Value2 = $finCode


$range1 = $currentSheet.Range("C10");
$r = $currentSheet.Range("C10:C45");
$range1.AutoFill($r, $currentCol)

$finCodeимеет начальное значение "abcd_10", которое вставляется в 10-ю строку, и теперь мне нужно расширить его до "abcd_45" до 45-й строки. Я использовал AutoFillдля этого, но это не работает для меня.

Автор: shikher.mishra Источник Размещён: 13.07.2016 06:02

Ответы (1)


0 плюса

22798 Репутация автора

Попробуйте это только с

$range1.AutoFill($r, 0)

Второй параметр определяет тип заливки и 0 по умолчанию , который должен работать в вашем случае (я тестировал только с помощью VBA , хотя).


Обновите, если вы используете стандартное COM-взаимодействие:

Следующий скрипт работает для меня (я использовал некоторые значения по умолчанию для неизвестных значений).

$Filepath = "C:\tmp\posh\excel-interop\Book1.xlsx" 

$Excel = New-Object -Comobject Excel.Application 
$Excel.Visible = $True
$Workbook = $Excel.Workbooks.Add()
$currentSheet = $Workbook.Sheets.Item('Sheet1')

$i = 10
$codeName = 'abcd'
$finCode = $codeName + "_" + $i
$currentSheet.Cells.Item(10, 3).Value2 = $finCode

$range1 = $currentSheet.Range("C10");
$r = $currentSheet.Range("C10:C45");
$range1.AutoFill($r, 0)
Автор: DAXaholic Размещён: 13.07.2016 06:14
Вопросы из категории :
32x32