1

是否有可能在关闭 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()

你能帮我处理不是宏文件吗?(但也许不可能)
谢谢。

根据你的回答我做了什么?
我尝试使用EPPlusSaveAs中的(而不是原来的):.Save()

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

但没有显示任何对话框。

4

1 回答 1

2

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

这样,如果用户试图只保存文件,他们将看到 Save As.. 对话框。FileInfo.FullName我通过保存文件然后给用户一个指向该属性的链接来在我们的 Intranet 的网页上使用它

于 2013-11-22T22:48:19.700 回答