如何在没有任何警报且不使用任何路径或文件名的情况下以只读方式打开excel文件?

时间:2019-05-24 10:04:02

标签: c# asp.net-mvc macros

我正在将数据加载到服务器中存储的excel模板中,并使用FileStreamResult下载它。我想将Excel下载为只读。在尝试访问路径时将其设置为只读是一个问题,但我不知道用户可以从服务器将其下载到系统中。那么,如何使文件只读? 我能够以只读方式下载,但是它询问诸如“您要保存更改还是以只读方式打开?”之类的提示。我不希望使用只读直接打开该提示和文件。

我尝试使用宏 但是它要求提示保存更改。 因为我不知道用户将从服务器下载到其特定位置的路径。那么,如何不使用路径r文件名将其设置为只读?

控制器:     System.IO.Stream电子表格流=新的System.IO.MemoryStream(); XLWorkbook wb =新的XLWorkbook(Server.MapPath(“〜/ XlsReport / Report_Template.xlsm”)); .....(将数据加载到工作表中)...

wb.SaveAs(spreadsheetStream);
spreadsheetStream.Position = 0;
return new FileStreamResult(spreadsheetStream,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = "Report.xlsm" };

宏:

Private Sub Workbook_Open()
 ThisWorkbook.ChangeFileAccess xlReadOnly   
End Sub

下载的文件要求保存更改。它应该直接以ReadOnly的形式打开,没有任何提示。

1 个答案:

答案 0 :(得分:0)

我用过 ThisWorkbook.Saved = True ThisWorkbook.ChangeFileAccess xlReadOnly

现在下载的文件以只读方式直接打开。