【问题标题】:Excel Interop - Set filename before savingExcel 互操作 - 在保存之前设置文件名
【发布时间】:2017-10-12 04:20:26
【问题描述】:

是否可以在保存文件之前设置excel文件名?

我有以下简单代码:

using Excel = Microsoft.Office.Interop.Excel;

Excel.Application excel = new Excel.Application();
excel.Visible = true;
Excel.Workbook workbook = excel.Workbooks.Add(Excel.XlSheetType.xlWorksheet);
Excel.Worksheet sheet = workbook.Sheets[1];

sheet.Cells[1, 1] = "Hello World!";

是否可以在保存前预定义此名称?

谢谢。

【问题讨论】:

标签: c# .net excel com excel-interop


【解决方案1】:

不幸的是,在保存之前没有明确的、万无一失的方法来执行此操作。最接近的方法是使用模板。如果您有一个名为 FOO.xltx 的模板,您可以像这样创建您的工作簿:

Application.Workbooks.Add "X:\path\to\FOO.xltx"

唯一的怪癖是新文档的名称将附加一个递增的数字(第一次是FOO1,然后是FOO2FOO3,等等)。

要创建模板,只需创建一个新文档,然后在保存时,从Save as type 下拉列表中选择Excel Template (*.xltx)

【讨论】:

  • 谢谢@MichaelGunter,这正是我要找的。还有一个问题,是否有某种方法可以保存文件,而不是末尾的递增数字:(FOO1 the first time, then FOO2,FOO3, etc.)。谢谢。
  • 没有。 Excel 将在“保存/另存为”对话框中自动附加数字。
【解决方案2】:

您必须使用saveas 以您想要的文件名保存文件。然后,当用户单击保存时,它只会更新先前创建的文件。不幸的是,没有其他办法。代码如下:

workbook.SaveAs(Filename: FILENAMEHERE);

这里是它的 MSDN 文档:https://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.saveas.aspx

【讨论】:

  • 谢谢,但这并不是我所需要的。在这种情况下,我们已经保存了文件,在我的情况下,我想将工作表打开为 unsaved 文档。如果我想完全关闭 Excel,我希望得到这个模式:Image
  • @RostislavOlshevsky,请说明您对“保存更改”对话框的意图。是否要阻止对话框或强制它在关闭工作簿时显示,即使它已经保存?
  • @TnTinMin 理想情况下,我根本不想保存文件。我只想用数据打开 Excel,就像我上面的例子一样。并且在这种情况下,当 Excel 建议我保存文件时,我希望有一些预定义的文件名进行保存。 (如果这是不可能的,那么关于您的选择,我最好是:“强制它在关闭工作簿时显示,即使它已经被保存”)。
  • @RostislavOlshevsky,我仍然不清楚您希望完成什么,因为您的最后一条评论向我暗示您希望保存它但不能同时保存。如果这句话:“理想情况下,我根本不想保存文件”是您的目标,那么只需设置 `WorkbookReference.Saved = True1。这将允许您在没有提示的情况下关闭工作簿,假设在设置该属性和关闭工作簿之间没有进行任何更改。
猜你喜欢
  • 2010-10-21
  • 1970-01-01
  • 2018-11-11
  • 2021-08-07
  • 1970-01-01
  • 1970-01-01
  • 2017-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多