如何dynamic地创buildExcel和在C#下载?

我有下面的示例代码将创build一个Excel文件。 我不想保存在服务器中。

if (app == null) return; app.Visible = true; object loc; workbook = app.Workbooks.Add(1); workbook.SaveAs("D:\\Sample.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing,Type.Missing); 

没有保存如何下载这个dynamic?

你违反了服务器上最基本的办公自动化规则 – 不要这样做! Microsoft Office不是为诸如Web服务器使用的非交互式login会话而devise的。 您可能会发现,现在这种情况下,您的代码没有太多的工作,但微软几乎可以保证,随着代码的变化,服务器的configuration和Office产品的更新,您将会遇到各种各样的问题。

相反,Office文档应该由与Office套件本身没有直接关系的许多工具之一生成(Office文档自Office 2007以来一直使用称为OpenXML的开放格式)。 这些工具直接生成XML文件和最终存储在xslx文件中的打包元数据。

我通常喜欢使用Microsoft OpenXML SDK,这是一个瑞士军刀。 使用不当很容易,但是您可以使用它创build几乎所有的Office文档。 http://msdn.microsoft.com/en-us/library/office/bb448854.aspx

如果您使用OpenXML SDK,那么Open XML SDK生产力工具是必备的。 SDK和生产力工具都可以下载: http : //www.microsoft.com/en-us/download/details.aspx?id=30425 。

看看EPPlus,我现在正在使用它进行一些项目。 如果你所做的只是创buildexcel文件,那么使用OpenXML SDK就会容易起来。

也看看这个问题从C#创buildExcel(.XLS和.XLSX)文件

您需要将文件保存到服务器并使用此代码进行下载。

  public void Downloadfile(string sFileName, string sFilePath) { var file = new System.IO.FileInfo(sFilePath); Response.Clear(); Response.AddHeader("Content-Disposition", "attachment; filename=" + sFileName); Response.AddHeader("Content-Length", file.Length.ToString(CultureInfo.InvariantCulture)); Response.ContentType = "application/octet-stream"; Response.WriteFile(file.FullName); Response.End(); }