【问题标题】:Open multiple copies of template file (.Net, Excel.Interop)打开模板文件的多个副本(.Net、Excel.Interop)
【发布时间】:2014-02-04 18:56:38
【问题描述】:

我有一个程序,用户在其中选择一些数据,然后程序打开并填充保存在程序目录中的模板 Excel 工作簿,供用户进一步修改、写入数据库等。

代码如下所示:

Dim ExcelApp As New Microsoft.Office.Interop.Excel.Application
Dim ExcelWorkbook As Microsoft.Office.Interop.Excel.Workbook = Nothing
...
ExcelWorkbook = ExcelApp.Workbooks.Open(PathToTemplateSheet)
...
ExcelWorkbook.SaveAs(Filename:=TempFileNameToSave)

通过将工作簿保存到临时位置,我可以确保用户不会覆盖模板,但这仍然会给我带来问题,因为自从工作簿 TempFileNameToSave 已被其他用户打开。

我的问题是什么是能够打开模板表的多个副本而不会给用户造成任何问题/覆盖旧的以防万一他们需要它的最佳方式是什么?

我理想的解决方案是只给用户一个新的、未保存的工作簿,只在他们的桌面上打开,然后他们可以将它保存在他们想要的任何地方/如果他们不想的话,根本不保存它。

我想我可以这样做:

  1. 创建一个新的空白工作簿:ExcelApp.Workbooks.Add
  2. 如上打开模板
  3. 将所有工作表从一个复制到另一个
  4. 关闭模板

但是,如果模板大小合适,那么这将占用大量处理器资源,我希望有更好的方法来完成此任务。

谢谢!!

【问题讨论】:

    标签: c# vb.net excel templates interop


    【解决方案1】:

    对于那些遇到同样问题的人,我想出了如何做我想做的事。

    对我来说,诀窍是将我的原始模板表字面意思保存为 excel 模板 (.xlst)。然后,我需要更改的只是更改这行代码:

    ExcelWorkbook = ExcelApp.Workbooks.Open(PathToTemplateSheet)
    

    收件人:

    ExcelWorkbook = ExcelApp.Workbooks.Add(PathToTemplateSheet)
    

    它的作用是根据模板创建一个新工作簿,因此可以根据需要创建任意多次,并且不会导致特定用户打开实际的原始模板文件。

    希望这对其他人也有帮助!

    【讨论】:

    • 在我快要放弃的时候救了我。谢谢!耶模板!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    相关资源
    最近更新 更多