ошибка взаимодействия HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH) на сервере - PullRequest
0 голосов
/ 28 февраля 2020

У меня проблема с приложением при попытке запуска на сервере.

У меня все работает нормально, но при передаче на сервер не удается создать сводную кэш.

Excel имеет разрешения на сервере с пользователем IIS, на моем компьютере у меня Office 365 и Office 2010 на сервере.

, пожалуйста, помогите. ошибка

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");

1 Ответ

1 голос
/ 04 марта 2020

решено.

попытка изменить эту строку

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

правильный формат для передачи диапазона в офисе 2010, я так думаю.

...