#
       private void FormatExcel(MSExcel._Application XlsA, int Row, int Col)
        {
            int i = Row, j = 0;            while (XlsA.Cells[i + j, 7].ToString() != "")
            {
                MSExcel.Range Range = XlsA.get_Range(XlsA.Cells[i + j, 7], XlsA.Cells[i + j, Col]);
                Range.Select();
                Range.NumberFormat = "@";
                j += 1;
            }
        }
当XlsA.Cells[i + j, 7].ToString()为""值时应该停止循环的,为什么没有停止呢?

解决方案 »

  1.   

    是""值时一直不停止循环,改成null也不行
      

  2.   

    XlsA.Cells[i + j, 7] != null && XlsA.Cells[i + j, 7].ToString().Trim().Length >0 
      

  3.   

    string.IsNullOrEmpty
    用这个判断会比较好
    以前遇过是""却无法判断的原因是编码....
    UTF8的""跟ASCII的""是不同的 
      

  4.   

    XlsA.Cells[i + j, 7].ToString().Length!="";
    应该要比较字符串的长度吧
      

  5.   

    因爲部是空的
    建議用string.IsNullOrEmpty方法
    這樣比直接 !=""要好很多。
      

  6.   

    #
    while (!string.IsNullOrEmpty(XlsA.Cells[i+j,7].ToString().Trim()))
    {
      MSExcel.Range Range = XlsA.get_Range(XlsA.Cells[i + j, 7], XlsA.Cells[i + j, Col]);
      Range.Select();
      Range.NumberFormat = "@";
      j++;
    }改成这样了,问题依旧
      

  7.   

    几个可能,你都试试吧。
    1.使用string.IsNullOrEmpty()
    2.你说的循环没有停止,是等了多久没有停止?打印出i+j看看到底走到哪一行了
    3.打印出XlsA.Cells[i+j,7].ToString()看看每次得到的到底是什么东西
      

  8.   

    XlsA.Cells[i + j, 7].ToString()  trim(" ")一下应该就好了!~
      

  9.   

    终于找到问题了,一直未获取到真正的数值while (XlsA.get_Range(XlsA.Cells[i + j, 7], 
           XlsA.Cells[i + j, 7]).Value2.ToString() != "")
    {
      MSExcel.Range Range = XlsA.get_Range(XlsA.Cells[i + j, 7], XlsA.Cells[i + j, Col]);
      Range.Select();
      Range.NumberFormat = "@";
      j++;
    }
      

  10.   


     
          private void FormatExcel(MSExcel._Application XlsA, int Row, int Col)
            {
                int i = Row, j = 0;            while (XlsA.Cells[i + j, 7] != null && XlsA.Cells[i + j, 7].ToString().Trim().Length >0)
           ……