【问题标题】:Counting PivotTables from an Excel Workbook with Powershell使用 Powershell 计算 Excel 工作簿中的数据透视表
【发布时间】:2016-09-09 22:34:34
【问题描述】:

我在使用 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

在每张纸上我都有一个数据透视表,但有什么问题?为什么无法识别床单上的枢轴?

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

【问题讨论】:

    标签: excel powershell excel-2010 powershell-2.0


    【解决方案1】:

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

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

    应该是

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-22
      • 2015-06-08
      • 2017-11-22
      • 2010-09-09
      • 1970-01-01
      • 2015-01-09
      • 2018-08-25
      • 1970-01-01
      相关资源
      最近更新 更多