interop error HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH) on server

-2

I am having a problem with my app when trying to run on the server.

In my place it works fine but when passed to the server it fails to try to create the pivotcache.

Excel has permissions on the server with the user IIS, on my computer I have Office 365 and Office 2010 on server.

please help.error

Excel.Application oApp;
            Excel.Worksheet oSheet;
            Excel.Workbook oBook;

            //Create COM Objects. Create a COM object for everything that is referenced
            oApp = new Excel.Application();
            oBook = oApp.Workbooks.Open(fileTest);
            oSheet = oBook.Sheets[1];
            //Range = oSheet.Range["A9","BN36"];
            //Excel.Worksheet oSheet2 = oBook.Worksheets.Add();
            //oSheet2.Name = "Pivot Table";

            //oApp = new Excel.Application();
            //oBook = oApp.Workbooks.Add();
            //oSheet = (Excel.Worksheet)oBook.Worksheets.get_Item(1);

            //oSheet.Cells[1, 1] = "Name";
            //oSheet.Cells[1, 2] = "Salary";

            //oSheet.Cells[2, 1] = "Frank";
            //oSheet.Cells[2, 2] = 150000;

            //oSheet.Cells[3, 1] = "Ann";
            //oSheet.Cells[3, 2] = 300000;
            Excel.Range last = oSheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell, Type.Missing);
            Excel.Range range = oSheet.get_Range("A1", last);

            int lastUsedRow = last.Row;
            int lastUsedColumn = last.Column;
            //// now capture range of the first sheet = I will need this to create pivot table
            Excel.Range oRange = oSheet.Range["A1", "AJ708"];

            // create second sheet
            if (oApp.Application.Sheets.Count < 2)
            {
                oSheet = (Excel.Worksheet)oBook.Worksheets.Add();
            }
            else
            {
                oSheet = oApp.Worksheets[2];
            }
            oSheet.Name = "Resumen";

            // specify first cell for pivot table
            Excel.Range oRange2 = oSheet.Cells[1, 1];

            // create Pivot Cache and Pivot Table heres trow exception error
            Excel.PivotCache oPivotCache = (Excel.PivotCache)oBook.PivotCaches().Add(Excel.XlPivotTableSourceType.xlDatabase, oRange);
            Excel.PivotTable oPivotTable = (Excel.PivotTable)oSheet.PivotTables().Add(PivotCache: oPivotCache, TableDestination: oRange2, TableName: "Summary");
c#
office365
pivot-table
office-interop
asked on Stack Overflow Feb 28, 2020 by FCA • edited Feb 28, 2020 by FCA

1 Answer

1

solved.

trying change this line

var oPivotCache = pivotCaches.Create(Excel.XlPivotTableSourceType.xlDatabase, "Sheet1!$A$1:$AL$" + lastUsedRow);

the correct format to pass a range on office 2010 i think so.

answered on Stack Overflow Mar 4, 2020 by FCA

User contributions licensed under CC BY-SA 3.0