在关闭由EPPlus创建的Excel文件之前显示“另存为对话框”(没有宏的方式)

时间:2013-06-04 10:22:36

标签: c# excel xlsx epplus

在关闭Excel之前,是否有可能在强制显示“另存为对话框”的情况下创建和打开EPPlus生成的XLSX(非宏)文件?

我的情景:
我用EPPlus创建XLSX文件并将其存储到我的应用程序的临时文件夹中。然后我立即调用此文件运行(Excel将打开,我的文件已加载)。没有任何更改我关闭Excel - 在这一刻我想强制对话框“另存为”将此文件保存到其他目录(不是我的临时)。你能用文件的任何属性(或其他方式)强制显示这个对话框吗?

为XLSM解决:
如果有人需要使用EPPlus显示Excel宏文件(XLSM)的“另存为”对话框,这就是:

OfficeOpenXml.ExcelPackage Package;
  Package.Workbook.CreateVBAProject();
  OfficeOpenXml.VBA.ExcelVBAModule excelVbaModule =
    Package.Workbook.VbaProject.Modules.AddModule("Module1");
  StringBuilder mac = new StringBuilder();
  mac.AppendLine("Sub Auto_Close()");
  mac.AppendLine("Application.Dialogs(xlDialogSaveAs).Show");
  mac.AppendLine("End Sub" );
  excelVbaModule.Code = mac.ToString();
Package.Save()

你可以帮我解决宏文件吗? (但也许不可能)
感谢。

根据您的回复我做了什么?
我尝试使用EPPlus中的SaveAs(而不是原始.Save()):

System.IO.FileInfo fileInfo = new System.IO.FileInfo(targetTemporaryFile);
if (fileInfo.Exists) { fileInfo.Delete(); }
Package.SaveAs(fileInfo);

但没有显示任何对话框。

1 个答案:

答案 0 :(得分:2)

有一种方法可以将与包对应的FileInfo对象标记为只读 - myFile.IsReadOnly = True

这样,如果用户尝试只保存文件,他们将被赋予另存为..对话框。我通过保存文件然后将用户链接到FileInfo.FullName属性

来在我们的Intranet的网页上使用它