使用Powershell从Excel工作簿计算数据透视表

时间:2016-05-13 16:22:10

标签: excel powershell excel-2010 powershell-v2.0

我遇到了PowerShell和excel的问题。

首先,我的powershell版本是2,excel版本是2010 x86。

我的代码是:

#Start Excel
    [Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Interop.Excel") | Out-Null
    $ObjXls = New-Object "Microsoft.Office.Interop.Excel.ApplicationClass"
    $ObjXls.Visible = $False
    $ObjXls.ScreenUpdating = $False
    $ObjXls.DisplayAlerts = $False
#Open the template workbook
    [String] $Private:TemplateFilePath = "$($Params['TEMPLATE_PATH'])\$TemplateFileName" 
    WriteLog -Message "Template file: $TemplateFilePath"
    $WbXls = $ObjXls.Workbooks.open($TemplateFilePath) 
    $WbXls.RefreshAll()
#Counting Pivot Tables
    ForEach ($sheet in $WbXls.Worksheets)
    {
        if ($sheet.Name -ne "LiteDB") {
       [int]$count = $sheet.PivotTables.Count
       [string]$sheetname = $sheet.Name
       writelog ($sheetname + " --- " + $count)

      For ($i = 0; $i -le $sheet.PivotTables.Count; $i++)  {    
      if (-not $sheet.PivotTables($i).RefreshTable()) {throw "Unable to refresh PivotTable"}
      $sheet.PivotTables($i).RefreshTable()
      $sheet.PivotTables($i).PivotFields("Week").CurrentPage=$Currentweek
      }
     }
     }

要清楚“Writelog”命令是由我创建的用于生成日志文件的库,它

有效,所以不要担心。

输出是工作表的名称和数据透视表的计数......但是:

NS --- 0,   SM --- 0,  QTY --- 0

在每张纸上我有一个数据透视表,但有什么问题?为什么不承认床单上的枢轴?

你能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

数据透视表是工作表对象的一种方法,而不是属性。所以在C#中(与VBA不同),你应该用括号表示方法调用。

[int]$count = $sheet.PivotTables.Count

应该是

[int]$count = $sheet.PivotTables().Count