打开模板文件的多个副本(.Net,Excel.Interop)

我有一个程序,用户select一些数据,然后程序打开并填充保存在程序目录中的模板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) 

通过将工作簿保存到一个临时位置,我确保用户不会覆盖模板,但这仍然为我创build问题,因为没有2个用户可以同时工作在此工作簿上,因为工作簿TempFileNameToSave ,已经被其他用户打开了。

我的问题是,能够打开模板的多个副本 ,而不会为用户造成任何问题或覆盖旧用户的情况下,最好的方法是什么?

我的理想解决scheme是只给用户一个新的,未保存的工作簿,只有在他们的桌面上打开,然后他们可以保存它,无论他们想要/如果他们不想保存。

我想我可以做到这一点:

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

但是,如果模板尺寸不合适,那将会非常浪费时间,我希望有一个更好的方法来完成这个任务。

谢谢!!

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

我的诀窍是将我的原始模板作为一个Excel模板( .xlst )。 那么,我需要改变的只是改变这一行代码:

 ExcelWorkbook = ExcelApp.Workbooks.Open(PathToTemplateSheet) 

至:

 ExcelWorkbook = ExcelApp.Workbooks.Add(PathToTemplateSheet) 

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

希望这可以帮助别人!