繁体   English   中英

导出为Excel格式

[英]Export To excel with formatting

我试图使用MVC 4中的Gridview将表从数据库导出到Excel。有人可以告诉我如何为excel工作表中的导出行赋予颜色吗?

public ActionResult ExportToExcel()
{
        GridView gv = new GridView();
        gv.DataSource = db.StudentRecords.ToList();
        gv.DataBind();
        Response.ClearContent();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", "attachment; filename=Marklist.xls");
        Response.ContentType = "application/ms-excel";
        Response.Charset = "";
        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        gv.RenderControl(htw);
        Response.Output.Write(sw.ToString());
        Response.Flush();
        Response.End();
        return RedirectToAction("index");
}

解决此问题有两种主要方法。 第一种是将数据渲染到现有的Excel文件(已创建的模板文件中,其中已经嵌入了所有格式)。 第二种是在渲染输出时以编程方式设置单元格的格式。

生成Excel文件(相对于简单的CSV文件)并非易事,因此最简单的方法是使用第三方组件。 我在Aspose.Cells上取得了很多成功(除了支持.NET之外,还有Java版本,也许还有其他版本)。 当然,这不是唯一的组件。 这是一种商业产品,但是根据我的经验,他们的支持非常出色。

如果确实决定使用组件来生成Excel文件,则GridView基本上是不必要的,因为您可以将数据集绑定或映射到组件对象模型中(在Aspose的情况下,您会将数据绑定到工作表)。

这是Aspose网站上的Hello World示例。 查看helloworld.aspx.cs代码以查看其工作方式。

http://www.aspose.com/demos/.net-components/aspose.cells/csharp/quick-start/data/hello-world.aspx

显然,这比您的示例要复杂得多,但是据我所知,这是生成复杂Excel文件(带有格式,公式等)的最简单方法。 如果您定期执行此类操作,那么进行此操作的投资非常方便。

另外,有关流的说明。 Aspose允许您轻松地将文件流式传输到HttpResponse流。 例如(来自以上文档):

workbook.Save(HttpContext.Current.Response, "HelloWorld.xls", ContentDisposition.Attachment, new XlsSaveOptions(SaveFormat.Excel97To2003));

正如Mikael上面指出的那样,那里还有其他组件,这些组件使这种工作变得更加容易,并且可以对Excel文件进​​行一些高级渲染。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM