我正在尝试在Excel工作表(ws)中查找文本,但是我不确定该文本在哪里,我只知道它将在给定范围内(A1:B64)。
当我使用此代码(用于测试目的)时,它可以正常工作,并且我可以找到该值:
var Row as object = From cell In ws.SelectedRange(2,2)
Where cell.Value.ToString().Equals("any text")
Select cell.Start.Row
但是当我将代码更改为此:
var Row as object = From cell In ws.SelectedRange("A1:B64")
Where cell.Value.ToString().Equals("any text")
Select cell.Start.Row
我收到一条错误消息:
System.NullReferenceException: 'Object reference not set to an instance of
an object.'
OfficeOpenXml.ExcelRangeBase.Value.get returned Nothing.
我还尝试将所选范围的值更改为:
ws.SelectedRange(ws.Dimension.Address)
ws.SelectedRange(ws.Dimension.Start.Row, ws.Dimension.End.Column)
ws.SelectedRange(1,1,64, 2)
ws.Cells("A1:B64")
所有这些都引发错误。
有帮助吗?
谢谢。
答案 0 :(得分:0)
难道您没有设置值的范围内的单元格吗?在这种情况下,EPPlus将返回null,并且您的ToString()调用将引发异常。
我自己没有尝试过此代码,但是也许您可以在C#中使用“安全导航操作符”?像这样:
var Row as object = From cell In ws.SelectedRange("A1:B64")
Where cell.Value?.ToString().Equals("any text")
Select cell.Start.Row
答案 1 :(得分:0)
我已解决此问题:
Dim Row as object = From cell In ws.SelectedRange("A1:B64")
Where cell.Value <> Nothing AndAlso cell.Value.ToString().Equals("any text")
Select cell.Start.Row