2017-03-16 56 views
1
<properties> 
<entry key="type">exSafe:Nocontract</entry> 
<entry key="aspects">cm:version,cm:title,cm:own,cm:author</entry> 
<entry key="cm:creator">1122334455</entry> 
<entry key="cm:autoVersion">true</entry> 
<entry key="cm:title">XXXXXXXXXXXXXXX</entry> 
<entry key="cm:modifier">1122334455</entry> 
<entry key="cm:created">2013-07-28T08:30:51.000+01:00</entry> 
<entry key="gwSafe:contractCustVend">XXXXXXXXXXXXXXXXXXX999</entry> 
</properties> 

我有下面的XML文件,我想通過PowerShell將它們轉換成Excel文件,任何人都可以幫助我嗎?用Powershell將XML轉換爲Excel

這是我到目前爲止有:

[xml]$inputFile = Get-Content "k1.xml" 
#export xml as csv 
$inputFile.Sites.ChildNodes | Export-Csv "k1.csv" -NoTypeInformation -Delimiter:";" -Encoding:UTF8 
+0

等都不是劇本創作服務。需要自己的努力來獲得幫助。您能否向我們提供您已經嘗試過的代碼樣本?我可以給自己編寫腳本:解析一個XML,你可以在Powershell中使用[xml]類型。要導出到Excel,您可以連接Excel COM對象。我還注意到:您的XML示例不完整,Properties元素未關閉。 – bluuf

+0

首先,我是Poweshell的新手,第二,我發佈我的問題,一旦我沒有用自己的腳本來完成。不管怎麼說,多謝拉! '[xml] $ inputFile = Get-Content「k1.xml」 #export xml as csv $ inputFile.Sites.ChildNodes | Export-Csv「k1.csv」-NoTypeInformation -Delimiter:「;」 -Encoding:UTF8'即使我試圖將XML文件轉換爲CSV文件,但這並不起作用。 – Tuhin

+0

歡迎來到Tuhin網站,我已經爲你更新了你的問題,包括你的代碼片斷,將來總是包含這些內容,這樣我們就可以看到你的嘗試/失敗 - 這將幫助你變得更好,並學習其他編碼方式電源外殼。您可以參考此網站以瞭解如何提出良好問題:https://stackoverflow.com/help/how-to-ask –

回答

2

我寫了一個小樣本,讓你開始。這包含基本邏輯。 我不包括代碼以添加標題(因爲這是很微不足道的完成,這也令人不滿意自己動手​​做)

[xml]$XML = @' 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> 
<properties> 
<entry key="type">exSafe:Nocontract</entry> 
<entry key="aspects">cm:version,cm:title,cm:own,cm:author</entry> 
<entry key="cm:creator">1122334455</entry> 
<entry key="cm:autoVersion">true</entry> 
<entry key="cm:title">XXXXXXXXXXXXXXX</entry> 
<entry key="cm:modifier">1122334455</entry> 
<entry key="cm:created">2013-07-28T08:30:51.000+01:00</entry> 
<entry key="gwSafe:contractCustVend">XXXXXXXXXXXXXXXXXXX999</entry> 
</properties> 
'@ 

## Create Excel COM Object 
$excel = New-Object -ComObject Excel.Application 
# Set the sheet to visible so you can actually see it (for testing purposes) 
$excel.Visible = $true 
# Create a workbook 
$workbook = $excel.Workbooks.Add() 
# Get sheet 1 
$sheet = $workbook.Worksheets.Item(1) 
# Set a counter 
$x = 1; 
# here we loop through the XML data and add this to the excel sheet 
foreach ($entry in $XML.properties.entry) 
    { 
     $sheet.Cells.Item($x,1) = $entry.Key 
     $sheet.Cells.Item($x,2) = $entry.'#text' 
     $x++ 
    }