尝试在导出到Word Doc期间修改gridview布局

时间:2013-05-16 18:30:10

标签: c# asp.net

我正在尝试向我的代码添加一个函数,将Gridview导出到word文档。作为参考,这里是我用来导出Gridview的代码:

        Response.AddHeader("content-disposition", "attachment;filename=Export.doc");
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.ContentType = "application/vnd.word";

        StringWriter stringWrite = new StringWriter();
        HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);

        HtmlForm frm = new HtmlForm();
        GridView1.Parent.Controls.Add(frm);
        frm.Attributes["runat"] = "server";
        frm.Controls.Add(GridView1);
        frm.RenderControl(htmlWrite);

        Response.Write(stringWrite.ToString());
        Response.End();

为了记录,我没有写这段代码,所以如果你想知道为什么某些事情是某种方式,我不知道。

无论如何,我需要解决此导出中的三个问题区域:

  1. 表格中的单元格只导出两个字符宽;这自然使桌子难以理解。我怀疑修复此问题的方法涉及使用“Gridview1.Styles.Add(...)”或向Gridview1添加Css类,但我这样做的尝试都失败了。

  2. 在网站上,Gridview已启用排序。我想保留列标题中的这些超链接,从而转换为word文档。

  3. 在网站上,Gridview在每一行都有“编辑”和“删除”功能(如果重要的话,最左边的列。)我想从doc export这个词中排除这一列。

  4. 任何人都可以帮助解决这些问题。非常感谢。

1 个答案:

答案 0 :(得分:0)

    Response.AddHeader("content-disposition", "attachment;filename=Export.doc");
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.ContentType = "application/vnd.word";

    StringWriter stringWrite = new StringWriter();
    HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);

    HtmlForm frm = new HtmlForm();

    /*--------------*/
    GridView1.Columns(0).Visible = false; //HIDE EDIT
    GridView1.Columns(1).Visible = false; //HIDE DELETE
    GridView1.AllowSorting = false; //Disable Sorting
    GridView1.DataBind();
    /*--------------*/

    GridView1.Parent.Controls.Add(frm);
    frm.Attributes["runat"] = "server";
    frm.Controls.Add(GridView1);
    frm.RenderControl(htmlWrite);

    Response.Write(stringWrite.ToString());
    Response.End();

我不太确定你在问题1中谈论的是什么,但也许尝试禁用列上的自动换行? appropriatecolumn.Wrap = false;