parsingXML和输出到Excel

我正在做一个脚本,将通过parsing2000个XML文件的数据,然后输出到Excel文件。 以下是我到目前为止:

#Get XML File $path = Get-ChildItem C:\Users\bcamareno\Desktop\xml\xml #Start Excel $xl=New-Object -ComObject "Excel.Application" $wb=$xl.Workbooks.Add() $ws=$wb.ActiveSheet $cells=$ws.Cells $cells.item(1,1)="HDD Report" $cells.item(1,1).font.bold=$True $cells.item(1,1).font.size=18 #Rows & Cols $row=3 $col=1 $A=4 $B=4 $C=4 $D=1 $E=2 $F=3 #column headings "Server","Disk0","Disk1","Disk2","Disk3","Disk4","Disk5","Disk6","Disk7" | foreach { $cells.item($row,$col)=$_ $cells.item($row,$col).font.bold=$True $col++ } #Site Code foreach ($item in $Path) { $cells.item($A,$D)= $item -replace "_pdisk.xml","" $A++ } #Grab ProductID foreach ($item in $Path) { [xml]$content = Get-Content "c:\Users\bcamareno\Desktop\xml\xml\$item" $try= $Content.SelectNodes('//ProductID') | select "#Text" $cells.item($B,$E)= $try -replace "@{#text=","" -replace "}","" $B,$E++ } $xl.Visible=$True 

但是当我运行它时,数据出错了,好像只是parsing最后一个文件,然后把结果添加到单元格中。

如果需要,我可以添加一个XML。

$B永远不会增加,所以你没有添加行到电子表格 – 只是覆盖同一行2000倍。

我还build议你使用比单个字母更多的描述性variables名称。

另外,改变这一行:

 [xml]$content = Get-Content "c:\Users\bcamareno\Desktop\xml\xml\$item" 

对此:

 [xml]$content = Get-Content $item.FullName 

这样,当你改变你的XML文件的位置时,你只需要做一次(当你调用Get-ChildItem ),而不是追赶2小时的“bug”,因为你忘记了更新该path的所有实例。

我相信我有点迟到了,但是我做了一些testing,对我有用。

 #Grab ProductID foreach ($item in $path) { [xml]$content = Get-Content "c:\Users\bcamareno\Desktop\xml\xml\$item" foreach ($try in $($Content.SelectNodes('//ProductID') | select "#Text")) { $cells.item($B,$E)= $try -replace "@{Size=","" -replace "}","" $B,$E++ } $B++ $E=2 } 

谢谢,并为我的伪英语感到抱歉:P