Может ли PowerShell генерировать простой файл Excel с несколькими листами?

Командлет Export-Csv может экспортировать данные в виде файла CSV, который затем можно импортировать в Excel. Однако то, что я хотел бы сделать, это объединить различные CSV-файлы (с различным определением столбцов) в один файл Excel с несколькими листами (где каждый лист отличается).

Может ли PowerShell напрямую вызвать DLL Excel и создать листы из файлов CSV?

Вы можете выполнить это с помощью Excel.ComObject, у меня есть функция, которую я создал, вы можете использовать ее, делать именно то, что вам нужно:

Function Merge-CSVFiles { Param( $CSVPath = "C:\CSV", ## Soruce CSV Folder $XLOutput="c:\temp.xlsx" ## Output file name ) $csvFiles = Get-ChildItem ("$CSVPath\*") -Include *.csv $Excel = New-Object -ComObject excel.application $Excel.visible = $false $Excel.sheetsInNewWorkbook = $csvFiles.Count $workbooks = $excel.Workbooks.Add() $CSVSheet = 1 Foreach ($CSV in $Csvfiles) { $worksheets = $workbooks.worksheets $CSVFullPath = $CSV.FullName $SheetName = ($CSV.name -split "\.")[0] $worksheet = $worksheets.Item($CSVSheet) $worksheet.Name = $SheetName $TxtConnector = ("TEXT;" + $CSVFullPath) $CellRef = $worksheet.Range("A1") $Connector = $worksheet.QueryTables.add($TxtConnector,$CellRef) $worksheet.QueryTables.item($Connector.name).TextFileCommaDelimiter = $True $worksheet.QueryTables.item($Connector.name).TextFileParseType = 1 $worksheet.QueryTables.item($Connector.name).Refresh() $worksheet.QueryTables.item($Connector.name).delete() $worksheet.UsedRange.EntireColumn.AutoFit() $CSVSheet++ } $workbooks.SaveAs($XLOutput,51) $workbooks.Saved = $true $workbooks.Close() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($workbooks) | Out-Null $excel.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null [System.GC]::Collect() [System.GC]::WaitForPendingFinalizers() } 

Обновите путь для файлов CSV, он создаст лист для каждого CSV в папке,

Выполните его следующим образом:

 Merge-CSVFiles -CSVPath C:\CsvFolder -XLOutput C:\ExcelFile.xlsx 
  • PowerShell | OLEDB | Excel | Невозможно прочитать данные из XLSX, созданные из стороннего приложения
  • Powershell - копирование и вставка последних строк TSV в конкретные ячейки в Excel
  • Как подключиться к существующему экземпляру Excel из PowerShell?
  • Сортировка столбца Excel в порядке DESCENDING
  • Powershell: извлечение списка IP-адресов, разделенных запятыми?
  • Как добавить ярлык вторичной оси Excel через PowerShell?
  • Как экспортировать вывод командного файла / скрипта Powershell в электронную таблицу Excel
  • Помощь в написании этого скрипта в файле excel
  • Нужно немного помочь добавить диапазон таблиц из файла excel на sharepoint в тело электронной почты с помощью powershell
  • Powershell превосходит ячейки слияния, когда ячейка может меняться
  • Как скопировать диаграмму из Excel в Word?
  • Давайте будем гением компьютера.