将数据导出到Excel

时间:2009-11-02 12:33:57

标签: c# .net excel

我需要将数据导出到格式化的Excel文档。

基本上,非技术人员应该能够创建(或只是修改)将成为导出过程模板的Excel文档。

模板应描述标题,使用的字段等。了解模板我必须将数据导出到此文档。基本上,它看起来像这样:

Header
{record.Name}

模板文档会非常复杂 - 它会有自定义格式,标签等。但是,格式化单元格不是我的任务,我只需要用数据填充文档。我不仅需要导出单个字段,还需要导出列表,因此我需要为列表中的每个元素添加行。

目前,我正在使用Excel 2003,但如果此版本支持更好的集成,我可以将其更改为Excel 2007。

我不知道Excel是否允许开箱即用的这种集成,但对我而言,如果我必须在Excel文档中定义一些自定义标签或使用某些第三方库,这一点并不重要。

我正在使用.NET 3.5和C#。

4 个答案:

答案 0 :(得分:0)

您可以使用MIME作为Excel将页面中的控件导出到Excel:

private void Button1_Click(object sender, System.EventArgs e)
{
    //Export to excel.
    Response.Clear();
    Response.Buffer= true;
    Response.ContentType = "application/vnd.ms-excel";
    Response.Charset = "";
    this.EnableViewState = false;
    System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
    this.ClearControls(datagrid);
    datagrid.RenderControl(oHtmlTextWriter);
    Response.Write(oStringWriter.ToString());
    Response.End();
}

有关详细信息,请参阅"Export ASP.NET DataGrid to Excel"教程。

答案 1 :(得分:0)

至少有两种与Excel集成的方法

  1. OLE自动化 - VS中有一些组件可以让您打开,关闭和操作excel。这适用于包括2003在内的所有版本。
  2. Linq to Excel。这仅适用于新版本(或者如果您为新文件格式安装了插件)。
  3. 就我个人而言,我认为第二种选择在这里更好,因为你肯定需要linq功能才能完成这类工作。

答案 2 :(得分:0)

这是一个很好的组件:

http://www.gemboxsoftware.com/GBSpreadsheet.htm

答案 3 :(得分:0)

我最终在excel中使用xml数据源并创建了xml映射。多亏了这一点,我得到了非技术用户可以编辑的漂亮模板,而在代码中我只创建了我的数据的xml描述。在使用它之前,必须创建定义数据模式的xsd文件。