我用的邹建的存储过程来生成excel。
然后用.net实现下载。
问题产生了:
当mssql还没有完全生成excel的时候,.net已经提示下载了。
所以下载到本地的excel无法打开。
有没有办法判断,当excel完全生成时,才提示用户下载呢?
我用了一个笨办法,在下载前从1到100000的空循环.但是还是不行。请问有没有更好的办法了?比如判断这个excel有没有被另一个程序在使用等等.不胜感激。

解决方案 »

  1.   

    又是没人理我?
    .NET版真让人失望呀。。
    太不厚道了!!!
      

  2.   

    不知道你的问题,帮你顶。我生成excel都使用流导出。
      

  3.   

    ?我用的邹建的存储过程来生成excel   怎么用的,介绍介绍你用dataset填充 excel 然后再指向那个生成的excel
    你用的方法听着挺有意思的,发个代码 研究研究
      

  4.   

    那要看EXCEL是怎么生成的,才能判断是否生成完毕。这样才能控制是否显示下载Excel文件。
      

  5.   

    谢谢dotnet_boy(男人本涩) 
    结帖。
    附上邹建老大的blog地址。
    里面有具体的代码和应用示例:
    http://blog.csdn.net/zjcxc/
      

  6.   

    我导出Excel是用下面的代码,不知是否能解决你的问题
    private void ClearControls(System.Web.UI.Control control)
    {
    for (int i=control.Controls.Count -1; i>=0; i--)
    {
    ClearControls(control.Controls[i]);
    } if (!(control is System.Web.UI.WebControls.TableCell))
    {
    if (control.GetType().GetProperty("SelectedItem") != null)
    {
    System.Web.UI.LiteralControl literal = new System.Web.UI.LiteralControl();
    control.Parent.Controls.Add(literal);
    try
    {
    literal.Text = (string)control.GetType().GetProperty("SelectedItem").GetValue(control,null);
    }
    catch { } control.Parent.Controls.Remove(control);
    } else if (control.GetType().GetProperty("Text") != null)
    {
    System.Web.UI.LiteralControl  literal = new System.Web.UI.LiteralControl ();
    control.Parent.Controls.Add(literal);
    literal.Text = (string)control.GetType().GetProperty("Text").GetValue(control,null);
    control.Parent.Controls.Remove(control);
    }
    }
    return;
    }你只须指定你要导出的DataGrid就行了
      

  7.   

    Click the link to solve your problem.Good luck!