在尝试使用ADO.NET查询Excel电子表格后,我已经决定尝试Linq to Excel 在我的项目中。
我创建了一个方法,当我为它提供了相应的A列值(两个在同一行中)时,它应该返回B列的值。 Sheet1有一个标题行或至少一行表示列A和B是什么。
当我将我的代码与基本linq查询组合以检索数据时,我只从最后一行获取数据,无论我要求的A列中的值是什么。它始终排在最后一排。我的表格中有1159行。电子表格是Excel 2010,因此数据引擎应该是我认为的ACE。
这是我的代码......
public static string ReturnDefinition(string remCode)
{
string strReturnMessage = "";
string pathToExcelFile = @"MEDICARE.xlsx";
string sheetName = "sheet1";
var excelFile = new ExcelQueryFactory(pathToExcelFile);
var codeDescriptions = from a in excelFile.Worksheet(sheetName) select a;
try
{
foreach (var a in codeDescriptions)
{
if (a["Code"].ToString().Contains(remCode))
{
strReturnMessage = a["Description"].ToString();
}
else
{
strReturnMessage = "No Data";
}
}
return strReturnMessage;
}
catch (Exception ex)
{
return "Error: " + ex.Message;
}
finally
{
}
}
任何想法?
更新
似乎我找不到结果。这与在找到结果时不会脱离循环有关。循环每次都继续到最后一次结果。
答案 0 :(得分:1)
答案 1 :(得分:1)
当你找到你要找的东西时,你应该直接返回值,否则它将继续循环,并且该值将是它找到的最后一个值或者没有数据&#39;:< / p>
strReturnMessage = a["Description"].ToString();
return strReturnMessage;
你不需要别人;只有当循环完成而没有找到值时,才会返回&#34;无数据&#34;:
strReturnMessage = a["Description"].ToString();
return strReturnMessage;
} // end of if
} // end of loop
return "No Data";
如果您想要LAST描述,其中Code包含搜索文本,则:
strReturnMessage = a["Description"].ToString();
} // end of if
} // end of loop
if (strReturnMessage == "") {
return "No Data";
} else {
return strReturnMessage;
}