代码之家  ›  专栏  ›  技术社区  ›  West

使用C语言列出的Excel范围#

  •  0
  • West  · 技术社区  · 4 年前

    我想从Excel范围中获取字符串列表,其中的数据可以是混合类型(字符串、双精度等)。我试着用这个:

    List<string> rangeToList(Excel.Range inputRng)
        {
            object[,] cellValues = (object[,])inputRng.Value2;
            List<string> lst = cellValues.Cast<string>().ToList();
            return lst;
        }
    

    但这条线 Cast<string> 返回此错误:

    Unable to cast object of type 'System.Double' to type 'System.String'
    

    如何将此对象数组转换为所需列表?

    0 回复  |  直到 11 年前
        1
  •  11
  •   kmatyaszek    11 年前

    首先你应该投 object 列出物品清单,然后使用 ConvertAll ( msdn )皈依 对象 string .

    List<string> rangeToList(Microsoft.Office.Interop.Excel.Range inputRng)
    {
        object[,] cellValues = (object[,])inputRng.Value2;
        List<string> lst = cellValues.Cast<object>().ToList().ConvertAll(x=> Convert.ToString(x));
        return lst;
    }
    
        2
  •  7
  •   D Stanley    5 年前

    Cast 不会将数字隐式转换为字符串,但可以调用 ToString 在每个对象上:

    List<string> lst = cellValues.Cast<object>()
                                 .Select(o => o.ToString())
                                 .ToList();