在关闭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);
但没有显示任何对话框。
答案 0 :(得分:2)
有一种方法可以将与包对应的FileInfo对象标记为只读 - myFile.IsReadOnly = True
这样,如果用户尝试只保存文件,他们将被赋予另存为..对话框。我通过保存文件然后将用户链接到FileInfo.FullName
属性