Хорошо, пришло время для начала этого вопроса. Я нашел следующий скрипт http://blogs.technet.com/b/heyscriptingguy/archive/2010/09/09/copy-csv-columns-to-an-excel-spreadsheet-by-using-powershell.aspxФункция Powershell импортирует несколько CSV в рабочую книгу Excel
Вопрос: как я могу получить powershell, чтобы закодировать этот скрипт для любого количества файлов CSV. Скорость скрипта не важна. Я получил ответы на некоторые вопросы, которые, в некотором роде, имеют проблемы. Использование сценария Technet обеспечивает правильный вывод.
Я придумал это, но мне очень трудно получить код, чтобы перебрать несколько файлов CSV.
Function Excel-Stuff {
[cmdletBinding()]
Param([Parameter(ValueFromPipeline=$true)][string]$junk)
$excel.cells.item(1,1) = "Server"
$excel.cells.item(1,2) = "Rack"
$excel.cells.item(1,3) = "Environment"
$excel.cells.item(1,4) = "RebootTime"
$excel.cells.item(1,5) = "Schedule"
$i = 2
$processes = Import-Csv 'C:\Monday.csv'
foreach ($process in $processes){
$excel.cells.item($i,1) = $process.Server
$excel.cells.item($i,2) = $process.Rack
$excel.cells.item($i,3) = $process.Environment
$excel.cells.item($i,4) = $process.RebootTime
$excel.cells.item($i,5) = $process.Schedule
$i++
} #end foreach process
$autofit = $Global:worksheet.UsedRange
$autofit.EntireColumn.AutoFit() | Out-Null
}#End Function.
$Excel = New-Object -ComObject excel.application
$workbook = $Excel.workbooks.add(1)
$Global:worksheet = $workbook.WorkSheets.Item(1)
$Global:worksheet.Name='Monday'
Excel-Stuff
$Excel.visible = $True
Этот подход является медленным. Не можете ли вы открыть CSV непосредственно в Excel и скопировать листы в новую книгу? Что касается ошибки, которую вы получаете: объекты рабочего листа не имеют свойства «Worksheets» (они не содержат других рабочих листов). –
Допустим, я просто бросаю дротики на примерах кода, пытаясь придумать что-то работоспособное. Я не нашел образец кода, который открывает любое количество CSV, а затем перемещает их в Excel и переименовывает рабочий лист. – user4317867