将多个CSV文件保存为XLS

我是PS的总noob,我试图将CSV文件的文件夹保存到XLS或XLSX时遇到问题。 我可以做一个单一的文件,但不能算出我做错了多次。

CLS $path = "H:\My Documents\" $files = Get-ChildItem $path -include *.csv -recurse echo $files foreach($file in $files) { $objExcel=New-Object -com "Excel.Application" $objWorkbook=$objExcel.workbooks.open($file) $objWorksheet=$objWorkbook.Worksheets.Item(1) #insert COUNTIF formula into cell A8 $strFormula = "=COUNTIF(I6:I1000," + [char](34) + ">0" + [char](34) + ")" $objExcel.Cells.Item(1, 8).Formula = $strFormula #Save as XLS $xlout=$file.Replace('.csv','xlsx') $objWorkbook.SaveAs($xlOut,51) $objWorkbook.Close() $objExcel.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($objExcel) } 

有人能帮助我吗?

好吧,我没有看到任何根本性的错误,但是它可能会在Excel快速连续开启和closures时遇到问题。 尝试在打开和closuresExcel的时间范围内移动循环。

 CLS $path = "H:\My Documents\" $files = Get-ChildItem $path -include *.csv -recurse echo $files $objExcel=New-Object -com "Excel.Application" foreach($file in $files) { $objWorkbook=$objExcel.workbooks.open($file) $objWorksheet=$objWorkbook.Worksheets.Item(1) #insert COUNTIF formula into cell A8 $strFormula = "=COUNTIF(I6:I1000," + [char](34) + ">0" + [char](34) + ")" $objExcel.Cells.Item(1, 8).Formula = $strFormula #Save as XLS $xlout=$file.FullName.Replace('.csv','.xlsx') $objWorkbook.SaveAs($xlOut,51) $objWorkbook.Close() } $objExcel.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($objExcel) 

编辑:
我更新了$ xlout来拉FullName元素,并修复了它的replace,因为它正在失去. 基本上把“somefile.csv”改成“somefilexlsx”。