Powershell脚本从csv转换为excel,然后重命名sheet1与文件名相同

我有两个脚本,我想知道我是否可以:

  1. 结合起来
  2. 将sheet1重命名为文件名称

我遇到的问题是,其中一个excel文件夹是另一个基于个别excel文件的具体名称。

代码1将csv转换为Excel文档

$workingdir = "C:\Users\user\Desktop\Output\*.csv" $csv = dir -path $workingdir foreach($inputCSV in $csv){ $outputXLSX = $inputCSV.DirectoryName + "\" + $inputCSV.Basename + ".xlsx" ### Create a new Excel Workbook with one empty sheet $excel = New-Object -ComObject excel.application $excel.DisplayAlerts = $False $workbook = $excel.Workbooks.Add(1) $worksheet = $workbook.worksheets.Item(1) ### Build the QueryTables.Add command ### QueryTables does the same as when clicking "Data » From Text" in Excel $TxtConnector = ("TEXT;" + $inputCSV) $Connector = $worksheet.QueryTables.add($TxtConnector,$worksheet.Range("A1")) $query = $worksheet.QueryTables.item($Connector.name) ### Set the delimiter (, or ;) according to your regional settings ### $Excel.Application.International(3) = , ### $Excel.Application.International(5) = ; $query.TextFileOtherDelimiter = $Excel.Application.International(5) ### Set the format to delimited and text for every column ### A trick to create an array of 2s is used with the preceding comma $query.TextFileParseType = 1 $query.TextFileColumnDataTypes = ,2 * $worksheet.Cells.Columns.Count $query.AdjustColumnWidth = 1 ### Execute & delete the import query $query.Refresh() $query.Delete() ### Save & close the Workbook as XLSX. Change the output extension for Excel 2003 $Workbook.SaveAs($outputXLSX,51) $excel.Quit() } ## To exclude an item, use the '-exclude' parameter (wildcards if needed) remove-item -path $workingdir -exclude *Crab4dq.csv 

脚本2将sheet1重新命名为我所传递的任何内容(目前一次是1个excel文档)

 $xlspath = "C:\Users\user\Desktop\Output\Test.xlsx" $xldoc = new-object -comobject Excel.application $xldoc.Visible = $false $xldoc.DisplayAlerts = $false $workbook = $xldoc.Workbooks.Open($xlspath ) $worksheet = $workbook.worksheets.item(1) $worksheet.name = "Result" $workbook.Save() $workbook.Close() $xldoc.Quit() 

我想这一步做到这一点,并且每个excel文档都有sheet1(它们只会有一个sheet),与文档命名一样。 可以这样做吗?

提前致谢!

项目清单

查看ImportExcel – PowerShell模块来导入/导出Excel电子表格,不使用Excel

您可以使用ImportExcel完成所有这些工作

要从CSV转换为Excel并将工作表命名为结果,请运行该命令

 Import-CSV filename.csv | Export-Excel filename.xlsx -WorkSheetName 'Result' 

要将文件夹中的所有CSV文件转换为.xlsx文件,并将每个Excel工作表的名称作为Result,请使用以下命令

 ls *.csv | ForEach-Object { Import-CSV $_.Name | Export-Excel ($_.BaseName + ".xlsx") -WorkSheetName 'Result' }