У меня проблема с API Microsoft.Office.Interop.Excel
(с использованием C #). Как только я загружаю существующий файл .xls, используя метод, показанный ниже, и затем запрашиваю конкретную рабочую таблицу, которая, как я знаю, существует в файле .xls, я просто получаю исключение.
Файл .xls, который я загружаю, огромен и получил около 35 листов, но странно то, что кажется, что загружаются только первые 3 листа документа.
//Code to load document
var xlApp = new Microsoft.Office.Interop.Excel.Application();
var xlWorkBook = xlApp.Workbooks.Open("PathAndNameOfMyFile.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
//code that fails or just returns bad ansvers:
//This code just returns a list of 3 worksheets
var test = xlWorkBook.Worksheets.Cast<Worksheet>().ToList();
//The first 3 worksheets loads fine, but not the fourth:
var sheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);//ok
sheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(2);//ok
sheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(3);//ok
sheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(4);//fails
//also the command xlWorkBook.Worksheets.Count returns 3.
Так у кого-нибудь есть идея, почему это так? Будем благодарны за любые идеи.
ОБНОВЛЕНИЕ: открывая файл xls, я обнаружил, что на самом деле кажется, что Excel Interop вместо этого открывает ссылочный файл xla в файле xls. Если это так, это объясняет, почему число листов возвращается неверно - кто-нибудь видел такое поведение раньше?