Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#:访问excel工作表中的单元格会引发NullReferenceException_C#_Excel - Fatal编程技术网

c#:访问excel工作表中的单元格会引发NullReferenceException

c#:访问excel工作表中的单元格会引发NullReferenceException,c#,excel,C#,Excel,所以我一直在尝试编写一个控制台应用程序(.netcore),它从Excel文件中读取数据,但我有点卡住了 我一直在努力使此代码示例正常工作: 我需要显式地使用(Range)单元格,因为当示例代码试图直接访问单元格时,VisualStudio抛出了错误 尝试加载工作表和工作表和范围的使用范围m_objecttodata map=null。使用excelRange.rows访问行失败,原因是System.NullReferenceException:“对象引用未设置为对象的实例。” static v

所以我一直在尝试编写一个控制台应用程序(.netcore),它从Excel文件中读取数据,但我有点卡住了

我一直在努力使此代码示例正常工作:

我需要显式地使用
(Range)单元格
,因为当示例代码试图直接访问单元格时,VisualStudio抛出了错误

尝试加载工作表和工作表和范围的使用范围
m_objecttodata map=null
。使用excelRange.rows访问行失败,原因是System.NullReferenceException:“对象引用未设置为对象的实例。”

static void Main(字符串[]args)
{
//创建COM对象。
Application excelApp=新应用程序();
如果(excelApp==null)
{
Console.WriteLine(“未安装Excel!!”;
返回;
}
工作簿excelBook=excelApp.Workbooks.Open(@“D:\test.xlsx”);
_工作表excelSheet=(_工作表)excelBook.Sheets[1];
范围excelRange=excelSheet.UsedRange;
foreach(excelRange.Rows中的范围行)//这是NullReference错误
{
//创建新行
控制台。写入(“\r\n”);
foreach(excelRange.Columns中的范围列)
{
范围单元格=(范围)excelRange.Cells[行,列];
//编写控制台
if(excelRange.Cells[row,col]!=null&&cell.Value2!=null)
Console.Write(cell.Value2.ToString()+“\t”);
}
}
//阅读后,重新启动excel项目
excelApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
Console.ReadLine();
}
我尝试了很多不同的代码,在所有工作表中循环或按工作表的名称调用工作表,但它总是以工作表和范围加载错误和NullReferenceException结束


任何帮助都将不胜感激。

我认为您使用的代码参考是.NET Framework中的控制台应用程序。我使用了您引用的代码,并将其放在.NET Framework控制台应用程序中,它工作得非常好。我将相同的代码放在.NET核心控制台应用程序中,但它不起作用。因此,您可能需要更改为.NET Framework,或者可以使用其他excel库。我使用NPOI,你可以按照一个例子或做一些更多的谷歌搜索,以找到其他的例子。可能还有更多类似的库在.NET Core中用于解析excel,但我没有使用或查看任何其他库。

可能重复的库可能已经合并了单元格。。。您还需要释放工作表、范围和工作簿以进行测试。我刚刚在前6个单元格(第1行3个,第2行3个)中写入了“测试”,所以exel文件应该很好。我知道什么是空引用,但我找不到正确加载工作表(或范围)的方法。为什么要在每个循环中为单个单元格创建一个新的“范围”,看一下手机