【问题标题】:Show "Save as dialog" before closing Excel file created by EPPlus (way without macro)在关闭由 EPPlus 创建的 Excel 文件之前显示“另存为对话框”(没有宏的方式)
【发布时间】:2013-05-30 16:53:51
【问题描述】:

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

但没有显示对话框。

【问题讨论】:

  • 你想为它做什么?窗口或网络应用程序
  • 适用于windows应用程序
  • 有saveas fucntion来了你可以用那个
  • @raman 这种方法对我不起作用。我尝试按照上面的问题重写它。但是没有出现保存对话框。
  • 您是否考虑过首先打开该对话框以提示输入文件名?然后使用该文件名,使用 EPPlus 生成 Excel 文件。然后你直接保存到用户想要的文件夹中。

标签: c# excel xlsx epplus


【解决方案1】:

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

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

【讨论】:

  • 好主意 :) 谢谢。但是因为这只有在我更改文档中的某些内容时才有效,所以我不能接受它作为最终解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多