I am trying to refresh a pivot table in an Excel sheet and get the following exception:
Item method in the PivotTables class failed
Heres the code:
pivotSheet.Activate();
Microsoft.Office.Interop.Excel.PivotTables pivotTables =
(Microsoft.Office.Interop.Excel.PivotTables)pivotSheet.PivotTables(missing);
int pivotTablesCount = pivotTables.Count;
if (pivotTablesCount > 0)
{
for (int i = 0; i <= pivotTablesCount; i++)
{
pivotTables.Item(i).RefreshTable(); //The Item method throws an exception
}
}
Any idea?
Assuming the indexing starts at zero you will overrun the collection with your loop.
Try:
for (int i = 0; i < pivotTablesCount; i++)
If that doesn't work Excel probably starts indexing at 1 not at 0.
Try:
for (int i = 1; i <= pivotTablesCount; i++)
This will help you it's working.
Microsoft.Office.Interop.Excel.Application oXL;
Microsoft.Office.Interop.Excel.Workbook mWorkBook;
Microsoft.Office.Interop.Excel.Sheets mWorkSheets;
oXL = new Microsoft.Office.Interop.Excel.Application();
oXL.Visible = true;
oXL.DisplayAlerts = false;
mWorkBook = oXL.Workbooks.Open(path, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
//Get all the sheets in the workbook
mWorkSheets = mWorkBook.Worksheets;
foreach (Microsoft.Office.Interop.Excel.Worksheet pivotSheet in mWorkSheets)
{
Microsoft.Office.Interop.Excel.PivotTables pivotTables = pivotSheet.PivotTables();
int pivotTablesCount = pivotTables.Count;
if (pivotTablesCount > 0)
{
for (int i = 1; i <= pivotTablesCount; i++)
{
pivotTables.Item(i).RefreshTable(); //The Item method throws an exception
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With