我有下面的示例代码,它将创建一个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);
没有保存如何动态下载?
答案 0 :(得分:4)
您违反了服务器上最基本的Office自动规则 - 不要这样做! Microsoft Office不适用于Web服务器使用的非交互式登录会话。您可能会发现,由于上面的代码不起作用,现在可以正常工作,但Microsoft可以保证随着代码的更改,服务器的配置以及Office产品的更新,您会遇到各种各样的问题。
相反,Office文档应该由许多与Office套件本身没有直接关联的工具之一生成(Office文档自Office 2007以来一直使用OpenXML的开放格式)。这些工具直接生成XML文件和最终存储在xslx文件中的打包元数据。
我通常喜欢使用Microsoft OpenXML SDK,这是一种瑞士军刀。它使用起来很容易,但您可以使用它创建几乎任何Office文档。 http://msdn.microsoft.com/en-us/library/office/bb448854.aspx
如果您要使用OpenXML SDK,那么Open XML SDK Productivity工具是必备工具。 SDK和Productivity Tool都可以下载: http://www.microsoft.com/en-us/download/details.aspx?id=30425
答案 1 :(得分:1)
看看EPPlus我现在正在将它用于多个项目。如果你所做的只是创建excel文件,那么使用OpenXML SDK就可以轻松起来然后再去。
答案 2 :(得分:0)
您需要使用此代码将文件保存到服务器并下载。
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();
}