我正在尝试对我读取的excel文件执行大型匹配和索引。大型工作正常,但它在匹配行上引发错误。如果我硬编码K = an int
,它就可以了。
当前错误:
类型' System.InvalidOperationException'的例外情况发生在NPOI.dll中但未在用户代码中处理
我正在做一个大的,匹配和索引来查找未排序行列表的前4行,我希望关联的值与它们一起使用。我的逻辑在vba或硬编码中运行得很好
其他信息:无法从错误公式单元格中获取数值
我的范围是C10:C30
和K10:K30
,两个范围都是正确的。
string cellrange = new CellRangeAddress(firstrow + 1, sheet1.LastRowNum, 10, 10).ToString();
string cellsrange = cellrange.Remove(0, 18);
string cellsranges = cellsrange.Remove(cellsrange.Length - 1, 1);
string states = new CellRangeAddress(firstrow + 1, sheet1.LastRowNum, 2, 2).ToString();
string statesrange = states.Remove(0, 18);
string statesranges = statesrange.Remove(statesrange.Length - 1, 1);
for (int row = 1; row <= 4; row++)
{
sheet1.CreateRow(row + firstrow + 1).CreateCell(15).SetCellFormula("LARGE(" + cellsranges + "," + row + ")");
HSSFFormulaEvaluator.EvaluateAllFormulaCells(hssfwb);
double j = sheet1.GetRow(row + firstrow + 1).GetCell(15).NumericCellValue;
sheet1.CreateRow(row + firstrow + 1).CreateCell(16).SetCellFormula("MATCH(" + j + "," + cellsranges + ", " + 0 + ")");
HSSFFormulaEvaluator.EvaluateAllFormulaCells(hssfwb);
double k = sheet1.GetRow(row + firstrow + 1).GetCell(16).NumericCellValue;
sheet1.CreateRow(row + firstrow + 1).CreateCell(17).SetCellFormula("INDEX(" + statesranges + "," + k + "," + 1 + ")");
HSSFFormulaEvaluator.EvaluateAllFormulaCells(hssfwb);
string stateperc = sheet1.GetRow(row + firstrow+1).GetCell(17).StringCellValue + "-" + j.ToString();
MessageBox.Show(stateperc);
}