У меня есть файл, который заносится в файл ".EXCEL" (поддельный Excel, но это вне нашего контроля). Это на самом деле HTML, но мне трудно конвертировать его в XML.
HTML выглядит так:
<table class="c41">
<tr class="c5">
<td valign="top" class="c6"><p class="c7"><span class="c8">Cash Activity </span>
</p>
</td>
<td valign="top" class="c9"><p class="c10"><br/><span class="c2">FRIDAY </span><br/><span class="c2"> </span></p>
</td>
</tr>
<tr class="c5">
<td valign="top" class="c6"><p class="c11"><br/></p>
</td>
<td valign="top" class="c9"><p class="c10"><br/><span class="c2">05-JAN-18</span><br/><span class="c2"> </span></p>
</td>
</tr>
<tr class="c12">
<td valign="top" class="c13"><p class="c7"><span class="c14">Prior Day Available Balance</span></p>
</td>
<td valign="top" class="c15"><p class="c10"><span class="c16">6,472,679.45
</span></p>
</td>
</tr>
</table>
Что выглядит так:
Cash Activity | Friday 05-JAN-18
______________________________________________
Prior Day Available Balance | $123,456.58
Есть ли в любом случае, я могу проанализировать это в Powershell для выходного XML, похожего на это:
<?xml version="1.0" encoding="utf-8" ?>
<Cash Activities>
<Cash Activity>
<Activity>Prior Day Available Balance</Activity>
<Balance>123456.58</Balance>
</Cash Activity>
</Cash Activities>
Пока что имеющийся у меня Powershell извлекает его только из электронного письма и сохраняет его в виде файла HTML:
$account = "my.email@mycompany.com"
#date to append to new file name
$date = Get-Date -Format yyyyMMdd
$searchDate = Get-Date -Format M/dd/yyyy
Write-Host $searchDate
#file to save attachment as
$newFileName = "Balance_Import_$date.xml"
$newFilePath = "C:\MyDirectory\\"
#Go into Outlook and get the MAPI
$mail = New-Object -ComObject outlook.application
$mailNS = $mail.GetNamespace("MAPI")
#get the account and Inbox we want
$myAcount = $mailNS.Folders | ? {$_.Name -eq $account}
$myInbox = $myAcount.Folders | ? {$_.Name -eq "Inbox"};
$myItems = $myAcount.Items | ? {$_.ReceivedTime.Date -eq $searchDate};
#loop through the Inbox and get any Attachments with the extension of .EXCEL
foreach ($f in $myInbox)
{
foreach($i in $f.Items)
{
Write-Host "Checking "$i.Subject"..."
if($i.ReceivedTime.Date -eq $searchDate)
{
Write-Host "---"
Write-Host $i.Subject
Write-Host "---"
foreach($a in $i.Attachments)
{
if($a.FileName -like "*.EXCEL")
{
#Move the attachment to the desired directory
$a.SaveAsFile((Join-Path $newFilePath $newFileName))
Write-Host $a.FileName " Saved as HTML"
#TODO: PARSE HTML INTO XML
}
}
}
}
}