0

我正在网页上构建一个 excel 文件(使用 EPPLUS),它提供了保存或打开文件的选项。

Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;  filename=Excel_List.xlsx");
package.SaveAs(Response.OutputStream);
Response.End();

这很好用。我只想知道如何检查用户是否打开/保存了文件?有活动吗?

4

4 回答 4

2

最简单的答案是你不能。一旦服务器将文件交给客户端,ASP.NET 就无法控制它。

理论上,您可以在 Excel 文件中放置一个宏来调用服务器上的 URL,但这是假设用户打开 Excel 文件并允许执行宏(在现代 Excel 版本中禁用)。

于 2013-02-25T11:30:01.153 回答
1

你无法确定它。生成输出后,您没有关于下载过程或用户对下载文件执行的操作的信息。它主要是由 Web 浏览器安全限制引起的。

于 2013-02-25T11:29:56.993 回答
0

不,这不是 HTTP 的用途。如果您可以成功地从服务器发送所有数据,您可能会认为客户端已收到所有数据。然后,客户可以丢弃、保存、打印、复制,对数据做任何他们喜欢的事情。

如果要执行此类检查,则应从 Excel 文件本身进行。但话又说回来,你不应该,因为隐私。如果我接到一个 Excel 文件打电话回家,我不知道会发生什么。

于 2013-02-25T11:31:06.463 回答
0

如果不向文件添加宏,就不可能知道他们是否真的在 Excel 中打开了它,但有一些方法可以向服务器发送确认下载已成功完成。为此,您需要在浏览器中嵌入富客户端来处理 HTTP 请求,而不是单独使用浏览器。可以使用SoftArtisans XFile之类的东西 。我们的 .NET Excel 库还带有一个可以管理下载过程的 ActiveX 控件(称为OfficeWriter 助手)。

免责声明:我为 SoftArtisans 工作

于 2013-02-26T14:48:18.977 回答