NPOI / POI帮助C#,setformula错误

时间:2016-10-31 20:29:11

标签: c# excel

我正在尝试对我读取的excel文件执行大型匹配和索引。大型工作正常,但它在匹配行上引发错误。如果我硬编码K = an int,它就可以了。

当前错误:

  

类型' System.InvalidOperationException'的例外情况发生在NPOI.dll中但未在用户代码中处理

我正在做一个大的,匹配和索引来查找未排序行列表的前4行,我希望关联的值与它们一起使用。我的逻辑在vba或硬编码中运行得很好

其他信息:无法从错误公式单元格中获取数值

我的范围是C10:C30K10: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);
}

0 个答案:

没有答案