【问题标题】:Exporting data from c# to word document将数据从 c# 导出到 word 文档
【发布时间】:2012-07-25 10:30:12
【问题描述】:

我在 c# 中有一个填充数据的网格。该网格中的一列包含按字母顺序排序的字母(后跟数字),如下所示:

A124
A256
A756
B463
B978
D322
etc.

我需要将这些数据导出为 Word 文档(.doc 或 .docx 格式)。 这就是我为导出信号网格所做的:

var dt = FuntionThatReturnsDatatables();

var gd = new GridView
        {
            DataSource = dt                     
        };

        gd.DataBind();

        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.Buffer = true;

        HttpContext.Current.Response.AddHeader("content-disposition", "attachment;
        filename=" + "List" + DateTime.Now.ToString("dd.MM.yyyy") + ".doc");

        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
        HttpContext.Current.Response.ContentType = "application/ms-word";
        HttpContext.Current.Response.Charset = "UTF-8";

      HttpContext.Current.Response.BinaryWrite(System.Text.Encoding.UTF8.GetPreamble()); 

        var oStringWriter = new StringWriter();
        var oHtmlTextWriter = new HtmlTextWriter(oStringWriter);

        gd.RenderControl(oHtmlTextWriter);
        HttpContext.Current.Response.Output.Write(oStringWriter.ToString());
        HttpContext.Current.Response.Flush();
        HttpContext.Current.Response.End();

但现在我必须遵循这个逻辑: - 对于网格中的每个字母,应创建一个带有标题的新表格,如下所示:

Table A:
 A124
 A256
 A756

  • 每个新表都应该从一个新页面开始,如下所示:

    表 A: A124, A256, A756, //新页面

    表 B: B463, B978, //新页面

    表 D: D322, 等等

  • 该word文档中的页面需要编号。

有没有办法在 c# 中编写代码来执行此操作,或者是否有一些库/插件可以完成此任务?

一些例子将不胜感激。

【问题讨论】:

标签: c# asp.net grid export-to-word


【解决方案1】:
【解决方案2】:

您需要使用哪个版本的 Word?如果它是可以处理 .docx 文件格式的版本,即 2007 及更高版本,那么您可以直接生成这些文件。事实上,最简单的方法是在 Word 中创建一个 .docx 文件,用作一种模板,然后以编程方式操作该文件中的 xml。

有关详细信息,请参阅

【讨论】: