2017-10-12 54 views
0

我在一個文件夾中有100多個電子郵件,並且它們都有附件。我想創建一個包將所有電子郵件附件中的數據複製到一個Excel表中,並添加一個列,這些列將包含這些電子郵件的接收日期與數據的對應關係。任何人都可以指導我如何在ssis包。ssis軟件包將電子郵件附件中的數據導入excel

+0

在PowerShell或vba中執行此操作會更容易。你的郵件服務器是什麼? –

+0

這些郵件放在不在郵件服務器上的文件夾中。 – brit

+0

只是爲了澄清,文件系統中的文件夾?包含附件的文件的內容是什麼? –

回答

0

不是ssis,但它應該產生所需的結果。只需更改最後一行的路徑。

function Get-Attachment 
{ 
    [CmdletBinding()] 

    Param 
    (
     [Parameter(ParameterSetName="Path", Position=0, Mandatory=$True)] 
     [String]$Path, 

     [Parameter(ParameterSetName="LiteralPath", Mandatory=$True)] 
     [String]$LiteralPath, 

     [Parameter(ParameterSetName="FileInfo", Mandatory=$True, ValueFromPipeline=$True)] 
     [System.IO.FileInfo]$Item 
    ) 

    Begin 
    { 
     remove-item $Path\attachments.xlsx 
     $outlook = New-Object -ComObject Outlook.Application 
     $excel = New-Object -ComObject Excel.Application 
     $excel.visible = $true 
     $workbook = $excel.Workbooks.add() 
     $s1 = $workbook.Sheets.add() 
     $s1.name = "Attachments" 
     $cells= $s1.Cells 
     $s1.range("A1:A1").font.bold = "true" 
     $s1.range("A1:A1").cells="RecDate" 
     $s1.range("B1:B1").cells="Data" 
     $s1.range("B1:B1").font.bold = "true" 
    } 
    Process 
    { 
     switch ($PSCmdlet.ParameterSetName) 
     { 
      "Path"  { $files = Get-ChildItem -Path $Path } 
      "LiteralPath" { $files = Get-ChildItem -LiteralPath $LiteralPath } 
      "FileInfo" { $files = $Item } 
     } 
     $row=2 
     $col=2 
     $files | % { 
      $msgFn = $_.FullName 
      if ($msgFn -notlike "*.msg") { 
       return 
      } 
      $msg = $outlook.CreateItemFromTemplate($msgFn) 
      $rdate = $msg.ReceivedTime 
      $msg.Attachments | % { 
      $attFn = $msgFn -replace '\.msg$', " - Attachment - $($_.FileName)" 
      if (Test-Path -literalPath $attFn) { 
        return 
       } 
       $_.SaveAsFile($attFn) 
       Get-ChildItem -LiteralPath $attFn 
       $d = (Get-Content -Path $attFn -Raw) 
       $cells.item($row,$col)=$d.ToString() 
       $cells.item($row,1) = $rdate 
       $row++ 
      } 
      $s1.range("A1:B1").EntireColumn.autofit() | out-Null 
      $s1.range("A1:B1").EntireColumn.WrapText = $false | out-Null 
     } 
    } 

    End 
    { 
     $workbook.SaveAs("$Path\attachments.xlsx") 
    } 
} 

Get-Attachment -Path C:\Users\Administrator\pathtodir\ 
+0

請讓我知道這是否適合你。 –

+0

應使用腳本任務以執行上述 – brit

+0

否,請使用Powershell。 –