使用 EPPlus 查找范围内的文本
Find a text in a range using EPPlus
我正在尝试在 excel sheet (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")
它们都抛出错误。
有什么帮助吗?
提前致谢。
不会是你的范围内有单元格没有设置值吧?在这种情况下,EPPlus 将 return 为 null,并且您的 ToString() 调用将抛出异常。
我自己还没有尝试过这段代码,但也许您可以在 C# 中使用 "Safe Navigation Operator"?像这样:
var Row as object = From cell In ws.SelectedRange("A1:B64")
Where cell.Value?.ToString().Equals("any text")
Select cell.Start.Row
我这样做解决了我的问题:
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
我正在尝试在 excel sheet (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")
它们都抛出错误。
有什么帮助吗?
提前致谢。
不会是你的范围内有单元格没有设置值吧?在这种情况下,EPPlus 将 return 为 null,并且您的 ToString() 调用将抛出异常。
我自己还没有尝试过这段代码,但也许您可以在 C# 中使用 "Safe Navigation Operator"?像这样:
var Row as object = From cell In ws.SelectedRange("A1:B64")
Where cell.Value?.ToString().Equals("any text")
Select cell.Start.Row
我这样做解决了我的问题:
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