C#Office互操作Excel - 超出界限

时间:2013-09-17 07:55:43

标签: c# excel exception multidimensional-array

我有一个我需要维护的程序(不是我写的) 实际的功能是它从互联网上获取一个excel文件,然后将其转换为html(我甚至不知道为什么)然后它尝试将其保存到一个新的csv文件......

长话短说,我在整个代码中的问题在于这两部分

xl = new Microsoft.Office.Interop.Excel.Application();
xl.Visible = false;
//p_sUBKPath is the path of the HTML file that has the converted excel file
Microsoft.Office.Interop.Excel.Workbook workbook = xl.Workbooks.Open(p_sUBKPath,     Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 

Microsoft.Office.Interop.Excel.Worksheet ws =  (Microsoft.Office.Interop.Excel.Worksheet)workbook.Sheets[1];
Microsoft.Office.Interop.Excel.Range range = ws.UsedRange;
object[,] values = (object[,])range.Value2;

代码有一个if语句,试图确保html中第一行的每个值都匹配所需的值

if (Convert.ToString(values[1, 1]).ToUpper().Trim() == "DOMAIN NAME" && values[1, 2]).ToUpper().Trim() == "SHORT NAME" && values[1,3]).ToUpper().Trim() == "LONG NAME" )
{
     //do something
}

if语句返回true并跳转到else语句,经过一些调试并尝试了一些代码行后,结果发现值[1,2]和值[1,3]从数组边界错误中返回。 值[1,1]的值是包含DOMAIN NAME,SHORT NAME和LONG NAME的整行,所以即使这个语句也返回flase

if (Convert.ToString(values[1, 1]).ToUpper().Trim() == "DOMAIN NAME")
{
     //do something
}

知道代码中发生了什么吗?

0 个答案:

没有答案