打开Excel应用程序客户端
我正在尝试使用COM互操作程序集将某些数据导出到ASP.NET Web应用程序的Excel工作簿。 这在开发中工作正常,因为服务器和客户机是同一台机器。 但是,部署时情况并非如此。 部署的版本不会引发异常,但它也不会在本地计算机上打开Excel(因为ASP.NET在服务器端执行,这很明显)。
我如何着手在客户机上创建Excel应用程序?
您需要生成excel文件服务器端,然后使用适当的MIME类型将字节发送到客户端,以便客户端可以弄清楚如何打开它。
像这样的东西...
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", fileName));
HttpContext.Current.Response.ContentType = "application/ms-excel";
HttpContext.Current.Response.BinaryWrite(bytes);
其中fileName
是文件所需的名称, bytes
是以byte[]
形式来自Excel生成器的输出。
请注意,这不会强制开放或类似的东西,它只是以最好的格式向客户端呈现内容,以便客户端在Excel中打开它。 用户将不得不点击“打开”,如果他们安装了excel,它将成为打开文件的默认应用程序。
如果客户端没有excel,或者他们的mime类型没有被映射等,它不会起作用。 如果没有一些疯狂的activex voodoo(我不推荐),你将无法“为他们打开excel”。
不要使用COM INTEROP !!!
有一个更好的方法:EPPlus
当在服务器上打开excel时,它会保留一份运行的excel的副本。 可怕。 EPPlus将允许您使用图表和所有内容创建本地Excel 2007/2010工作表。 而不需要在服务器上安装办公室。 我们正在使用它,非常漂亮。
如果客户端没有Excel 2007或更高版本,他们可以从Microsoft下载兼容包。
听起来像是一个巨大的潜在安全漏洞,如果你问我!
一种方法可能是启动ActiveX Excel控件? (ActiveX只是一个COM对象的营销术语)。 我不熟悉ASP.NET,所以我不知道这将如何工作在服务器/客户端边界。
更简单,更安全的方法是创建一个CSV文件,并通过标准的http发送。 用户可以在Excel中打开它。 对于单个数据工作表而言,这样可以很好,但不适用于使用宏,格式等的复杂事物。
链接地址: http://www.djcxy.com/p/35673.html