使用PowerShell从Excel文件中读取注释

时间:2017-06-28 19:48:54

标签: excel powershell com comments

我的搜索只能在VBA中产生类似的东西,但我有一个不同的方法,并在PowerShell中解决这个问题。

我是PowerShell的新手,我想阅读Excel文件中的所有注释并将其保存为CSV文件。一切都有效,除了阅读评论。注释是一个com对象。如何从com对象获取实际注释?这是相关代码的片段。我不能用invokemember做到这一点,但也许我做错了。提前谢谢。

ForEach ($File in (Get-ChildItem $folder -Include *.xls, *.xlsx, *.xlsm -Recurse))
{
   $sh=$document.Sheets.Item($i)
   $comments = $sh.comments
   foreach ($comment in $comments)
   {
       #[System.__ComObject] <--- Must get this value | Add-Content -file.csv
   }  
}

我也愿意采用其他方法来实现这一目标。

2 个答案:

答案 0 :(得分:1)

每个Comment Object都有一个Text method,可以返回或更新信息。

我更进了一步并拆分了换行符,以便你可以将作者的评论分开:

foreach ($comment in $comments) {
    $CommentText = $comment.text().split([environment]::newline)
    [pscustomobject]@{
        'Author' = $CommentText[0]
        'Text' = $CommentText[1]
    }
}

答案 1 :(得分:0)

我确信有很多方法可以做到这一点......

import-module psexcel
$fred = new-object OfficeOpenXml.ExcelPackage -ArgumentList "C:\Users\mccarthyd\Documents\Book1.xlsx"

foreach ($worksheet in $fred.Workbook.Worksheets) {
    $worksheet.comments
}

请参阅此帖子:powershell excel access without installing Excel