none
C#自动化Excel中UsedRange.Rows.Count的问题 RRS feed

  • 问题

  • 是用C#对Excel进行自动化操作时,如果我使用UsedRange.Rows.Count计算则可以计算出当然Excel工作表中已经被使用过的数据行数,但是如果说我有一个Excel文件,假设我先存储了100行数据,我使用UsedRange.Rows.Count计算出来的行数为100,正确,但是我如果把这个工作表的后面50行数据删除之后再使用UsedRange.Rows.Count计算出来的行数仍然为100,这个明显不正确,应该为50才对,请问改用什么方法或者什么函数才可以实现我说的遮阳得出正确的结果呢?谢谢。
    2011年4月5日 2:43

答案

  • 你好

    我做了下面测试代码,但是没遇到你说的那种情况。我猜你是不是删除之后没有保存excel呢?

     public Form1()
        {
          InitializeComponent();
          object missing = Missing.Value;
          Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
          xlApp.Workbooks.Open(@"d:\test3.xlsx", missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
    
          Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)xlApp.Workbooks[1].Worksheets[1];
           MessageBox.Show(ws.UsedRange.Rows.Count.ToString());
           xlApp.Quit();
        }
    
    希望对你有帮助。
    Cookie Luo[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Cookie Luo 2011年4月13日 9:15
    2011年4月8日 5:21

全部回复

  • 因为您删除收据后其实那删除的 50 行还在,只是都是空白数据而已。试试看直接利用 Delete 等方法删除。而不是只移除其列上的内容。
    Mark Zhou
    2011年4月5日 9:02
  • 但是我删除的时候也是选中,然后按键盘上的del键删除的了。那如果说就是我留下了空白区域,那该怎么样能够识别出这样的情况然后获取正确的行数呢?谢谢。
    2011年4月5日 9:31
  • 你好

    我做了下面测试代码,但是没遇到你说的那种情况。我猜你是不是删除之后没有保存excel呢?

     public Form1()
        {
          InitializeComponent();
          object missing = Missing.Value;
          Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
          xlApp.Workbooks.Open(@"d:\test3.xlsx", missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
    
          Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)xlApp.Workbooks[1].Worksheets[1];
           MessageBox.Show(ws.UsedRange.Rows.Count.ToString());
           xlApp.Quit();
        }
    
    希望对你有帮助。
    Cookie Luo[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Cookie Luo 2011年4月13日 9:15
    2011年4月8日 5:21
  • 你好

    我关闭这个帖子,如果还有问题的话,点击取消标记为答复。


    Cookie Luo[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年4月13日 9:15