C# 读取Excel文件中的单元格时未设置对象引用

C# 读取Excel文件中的单元格时未设置对象引用,c#,.net,excel,nullreferenceexception,C#,.net,Excel,Nullreferenceexception,我使用的是Excel.dll,它是联机可用的Excel阅读器(不是 Microsoft.Office.Intertop.Excel)读取包含多条记录的Excel 这是我的密码- Try { string path = "somelocalpath"; foreach (var worksheet in Workbook.Worksheets(path)) { //Some code } } catch (

我使用的是Excel.dll,它是联机可用的Excel阅读器(不是 Microsoft.Office.Intertop.Excel)读取包含多条记录的Excel

这是我的密码-

 Try
 {
       string path = "somelocalpath";
       foreach (var worksheet in Workbook.Worksheets(path))
       {
              //Some code
       }
 }
 catch (Exception e)
 {
       return false;
 }
在这里,我在Workbook.Worksheets(路径)的第一次迭代中遇到异常。给定的本地路径上有excel工作表(工作表有三列三行,其中第一行是标题行)

另外,据我了解,前一段时间它工作时没有错误,问题不在于代码,而可能是工作表的格式,我不确定


有人能帮我一下吗。

您需要打开文件并将工作表加载到您的范围对象。大概是这样的:

Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"myexcelfile.xlsx");
Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;

初始化后,您可以在foreach中使用您的范围

您还没有打开文件-使用类似于
Workbook wb=Workbooks.Open(path)
的方法返回对打开的工作簿的引用,然后使用
foreach(wb.Worksheets中的var ws)
这是一种非常糟糕的错误处理方法;捕获异常,扔掉有价值的错误信息,然后将其转换为旧的C样式返回代码。@UweKeim这只是一个示例代码,catch块中有很多内容。最好没有catch。我在Excel中找不到应用程序类。只是为了更新我使用的是Excel.dll。“Excel.dll”是什么意思?这是某种供应商提供的某种产品吗?您添加了Microsoft.Office.Intertop.Excel(Excell.dll)对吗?@ShinoLex否这不是Microsoft.Office.Intertop.Excel。这是我下载的在线excel阅读器。这在我们的应用程序中需要一些额外的功能,因此不使用传统的Microsoft.Office.Intertop.Excel。抱歉没有说清楚。即使如此,你也需要一个我在回答中写的类似代码。问题仍然是,您的范围为空,如果您将断点设置为该行并检查变量,您将看到它仍然为空。所以,在使用变量之前先填充它,问题就会得到解决