C# 如何在c中动态创建excel并下载?

C# 如何在c中动态创建excel并下载?,c#,asp.net,excel,C#,Asp.net,Excel,我有下面的示例代码,它将创建一个excel文件。 我不想把这个保存在服务器上 if (app == null) return; app.Visible = true; object loc; workbook = app.Workbooks.Add(1); workbook.SaveAs("D:\\Sample.xls",

我有下面的示例代码,它将创建一个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);

如果不保存如何动态下载此文件?

您违反了服务器上办公自动化的最基本规则-不要这样做!Microsoft Office不是为非交互式登录会话而设计的,例如web服务器使用的会话。您可能会发现,考虑到上面的代码没有太多功能,现在这种方法可以发挥作用,但Microsoft几乎可以保证,随着代码的更改、服务器的配置和Office产品的更新,随着时间的推移,您会遇到各种各样的问题

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

我通常喜欢使用MicrosoftOpenXMLSDK,这是一把瑞士军刀。它很容易被不恰当地使用,但是你可以用它创建几乎所有的Office文档。

如果您要使用OpenXMLSDK,那么OpenXMLSDK生产力工具是必不可少的。SDK和生产力工具均可下载:
.

您违反了服务器上办公自动化的最基本规则-不要这样做!Microsoft Office不是为非交互式登录会话而设计的,例如web服务器使用的会话。您可能会发现,考虑到上面的代码没有太多功能,现在这种方法可以发挥作用,但Microsoft几乎可以保证,随着代码的更改、服务器的配置和Office产品的更新,随着时间的推移,您会遇到各种各样的问题

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

我通常喜欢使用MicrosoftOpenXMLSDK,这是一把瑞士军刀。它很容易被不恰当地使用,但是你可以用它创建几乎所有的Office文档。

如果您要使用OpenXMLSDK,那么OpenXMLSDK生产力工具是必不可少的。SDK和生产力工具均可下载: .

看一看,我现在在许多项目中使用它。如果您所做的只是创建excel文件,那么使用

再看看这个问题

看看我现在在很多项目中使用它。如果您所做的只是创建excel文件,那么使用


再看看这个问题

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

  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();
  }

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

  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();
  }

你成了一个经典错误的受害者——其中最著名的错误是永远不要卷入亚洲的陆地战争——但唯一不那么出名的是:永远不要在非交互式会话中使用办公自动化!你成了一个经典错误的受害者——其中最著名的错误是永远不要卷入亚洲的陆地战争——但唯一不那么出名的是:永远不要在非交互式会话中使用办公自动化!