我遇到了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
在每张纸上我有一个数据透视表,但有什么问题?为什么不承认床单上的枢轴?
你能帮我解决这个问题吗?
答案 0 :(得分:0)
数据透视表是工作表对象的一种方法,而不是属性。所以在C#中(与VBA不同),你应该用括号表示方法调用。
[int]$count = $sheet.PivotTables.Count
应该是
[int]$count = $sheet.PivotTables().Count