在closures由EPPlus创build的Excel文件之前显示“另存为对话框”(没有macros的方式)
在closuresExcel之前,是否有可能创build并打开由EPPlus生成的XLSX(非macros)文件,并强制显示“另存为对话框”?
我的场景:
我用EPPlus创buildXLSX文件并将其存储到我的应用程序的临时文件夹中。 然后我立即调用这个文件运行(Excel将打开,我的文件被加载)。 没有任何更改,我closures了Excel – 在这一刻我想强制对话框“另存为”将此文件保存到其他目录(不是我的临时)。 你能强制显示这个对话框的文件的任何属性(或其他方式)?
解决了XLSM:
如果您需要某人使用EPPlus显示Excelmacros文件(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()
你能不能帮助我的macros文件? (但也许这是不可能的)
谢谢。
我根据你的回答做了什么?
我尝试从EPPlus中使用SaveAs
(而不是原始的.Save()
):
System.IO.FileInfo fileInfo = new System.IO.FileInfo(targetTemporaryFile); if (fileInfo.Exists) { fileInfo.Delete(); } Package.SaveAs(fileInfo);
但是没有显示对话框。
有一种方法可以将与Package对应的FileInfo对象标记为只读 – myFile.IsReadOnly = True
这样,如果用户试图保存文件,他们将被给予另存为..对话框。 我通过保存文件然后交给用户一个链接到FileInfo.FullName
属性来在我们的Intranet的网页上使用它