0

我正在尝试在我的代码中添加一个函数,将 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(...)”或将 Css 类添加到 Gridview1,但我这样做的尝试失败了。

  2. 在网站上,Gridview 已启用排序。我想保持列标题中的这些超链接不会翻译成 word 文档。

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

任何人都可以在这些问题上提供任何帮助,我们将不胜感激。

4

1 回答 1

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;

于 2013-05-16T20:18:52.577 回答