我遇到了Microsoft.Office.Interop.Excel
api的问题(使用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在xls文件中打开引用的xla文件。如果是这种情况,那就可以解释为什么工作表的数量返回错误 - 以前有人见过这种行为吗?