使用重命名和设置分隔符将.xlsx处理为使用Powershell的csv

我有一个Excel文件,我收到并希望使用Powershell将其处理为CSV。 我必须非常明确地进行修改,以便能够处理csv信息的程序的可靠input。 我不知道确切的标题,但我知道可以重复。 我所做的是用Excel打开xlsx文件,并将其另存为CSV:

$objExcel = New-Object -ComObject Excel.Application $objExcel.Visible = $True $objExcel.DisplayAlerts = $True $Workbook = $objExcel.Workbooks.open($xlsx1) $WorkSheet = $WorkBook.sheets.item($sheet) $xlCSV = 6 $Workbook = $objExcel.Workbooks.open($xlsx2) $WorkSheet = $WorkBook.sheets.item($sheet) $WorkBook.SaveAs($csv2,$xlCSV) 

现在,XLSX文件将有逗号,所以首先我想把它们改成点。 我试过这个,但它不工作:

 $objRange = $worksheet.UsedRange $objRange.Replace ",", "." 

它错误地说:意外的标记“”,“”。

然后当保存我想设置分隔符为逗号,因为它使用“;” 标准。 像这样的东西:

 $WorkBook.SaveAs($csv2,$xlCSV) -delimiter "," 

最后一个问题是重复的头文件; 这可以防止PS使用导入CSV。 在这里,我尝试过,当文件用逗号分隔它的工作原理:

 Get-Content $downloads\BBKS_DIR_AUTO_COMMA.csv -totalcount 1 >$downloads\Headers.txt 

但后来我需要重新命名重复的名字,像我可以有Regio,Regio,Regio。 我想将其更改为Regio,Regio2,Regio3

我的计划是查找txt的数据,search重复,然后添加一个增量数字。

最后我需要添加一个增量数字的列,但总是有四个数字,比如: 0001,0002,0010,0020,0200,1500,我不会超过9999,这怎么办?

如果你能帮助我,如果只有部分,我很高兴。 此外,我正在运行Windows 7 x64,Powershell 3.0,Excel 2016(如果相关)如果更容易,它可以返回到命令提示符执行一些任务。

就个人而言,我不会尝试通过Excel本身和COM使用Excel工作表 – 我会使用优秀的模块https://github.com/dfinke/ImportExcel

然后,您可以从工作表直接导入到本机Powershell对象数组,然后使用Export-Csv -Delimiter重新导出。

编辑:要回答跟进ups:

一旦你加载了模块,你可以做“Get-Module ImportExcel | Select-Object -ExpandProperty ExportedCommands”来查看它可用的内容。

要首先导入您的Excel,请执行以下操作:

 $WorkBook = Import-Excel 

如果你需要照顾重复的列名,你可以这样做:

 $WorkBook = Import-Excel -Header @("Regio1", "Regio2", "Regio") 

在传递给-Header的数组中,需要包含工作簿所需的每一列。