none
NPOI读取FORMULA单元格时候如何判断读出来的值是文本还是数字? RRS feed

  • 问题

  • 最近有个项目需要读取一张excel的某几个写了公式的单元格,这几个单元格有的读出来是文本有的读出来是数字。如果我在程序里循环读取这几个单元格的值,例如ufsheet.GetRow(4).GetCell(i).NumericCellValue。这样的话读到文本的时候就会报错。我想问有没有办法在读取之前判断该公式单元格计算出来的值属于什麽类型的值?这里有个问题就是如果用CellType来判断单元格的类型由于是公式单元格,所以读出来的值都是FORMULA。不知道有没有别的办法判断?谢谢大家!
    2015年4月2日 5:33

答案

  • 你好:

    欢迎来到MSDN中文论坛。

    请参考这个开源项目官方讨论区其他开发人员的提问:

    https://npoi.codeplex.com/discussions/444731

    尝试一下里面提供的方法:

    public static object GetValue(this ICell cell, CellType cellType)
            {
                object value = null;
    
                switch (cellType)
                {
                    case CellType.STRING:
                    {
                        value = cell.StringCellValue;
                        break;
                    }
                    case CellType.FORMULA:
                    {   //If its a Formula, get the Actual Value not the formula itself.
                        value = cell.GetValue(cell.CachedFormulaResultType);
                        break;
                    }
    


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年4月10日 7:45
    版主