导出的excel文件只显示页眉和页脚 中间的数据没了 导出word能显示全部 在windows xp(sp2)和windows2000 excel2003 上都这样现象:
行号2-42内容没了

解决方案 »

  1.   

    public static void ExportDataGrid(DataGrid dataGrid ,string fileName,string applicationType)
    {
    dataGrid.Visible=true;
    if(dataGrid.Page != null)
    {
    dataGrid.Page.EnableViewState = false;
    }
    System.Web.HttpContext.Current.Response.Clear(); 
    System.Web.HttpContext.Current.Response.Buffer= true; 
    System.Web.HttpContext.Current.Response.Charset="GB2312";
    System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename="+fileName);
    System.Web.HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
    System.Web.HttpContext.Current.Response.ContentType = applicationType;
    System.IO.StringWriter oStringWriter = new System.IO.StringWriter(); 
    System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);

    DataExport.ClearControls(dataGrid);
    dataGrid.RenderControl(oHtmlTextWriter); 
    System.Web.HttpContext.Current.Response.Write(oStringWriter.ToString());
    System.Web.HttpContext.Current.Response.End();
    }跟孟子e章上差不多 做了少少改动
      

  2.   

    导出的按钮ExportDataGrid(datagrid,string.Format("{0}{1}.xls",DateTime.Now.Date.ToString("yyyyMMdd"),new Random().Next(100)),"application/ms-excel");
      

  3.   

    光看这也不行啊,楼主,具体代码在ExportDataGrid这个方法里,把这个方法帖出来吧。有可能是DataGrid有其他Web控件,没办法RenderControl的原因。
      

  4.   

    赫赫,你代码就在上面,8好意思哦,错过了。DataExport.ClearControls(dataGrid); 这里代码什么意思?ClearControls...
      

  5.   

    ClearControls也上在 孟子e章 上的一个拷贝
    功能是清除tablecell里一些的"没什么用的"控件 并把某些控件转用LiteralControl代替
    private static void ClearControls(Control control)
    {
    for (int i=control.Controls.Count -1; i>=0; i--)
    {
    ClearControls(control.Controls[i]);
    } if (!(control is TableCell))
    {
    if (control.GetType().GetProperty("SelectedItem") != null)
    {
    LiteralControl literal = new 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)
    {
    LiteralControl literal = new LiteralControl();
    control.Parent.Controls.Add(literal);
    literal.Text = (string)control.GetType().GetProperty("Text").GetValue(control,null);
    control.Parent.Controls.Remove(control);
    }
    }
    return;
    }
      

  6.   

    本来datagrid有分页和排序的 我去之后再导出导出word没问题 导出到excel的话datagrid.items里的内容缺失
    把ClearControls()去掉之后 再试还是一样~