打开模板文件的多个副本(.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是只给用户一个新的,未保存的工作簿,只有在他们的桌面上打开,然后他们可以保存它,无论他们想要/如果他们不想保存。
我想我可以做到这一点:
- 创build一个新的空白工作簿:
ExcelApp.Workbooks.Add
- 如上所述打开模板
- 将所有工作表从一个复制到另一个
- closures模板
但是,如果模板尺寸不合适,那将会非常浪费时间,我希望有一个更好的方法来完成这个任务。
谢谢!!
对于那些遇到同样问题的人,我想出了如何去做我想做的事情。
我的诀窍是将我的原始模板作为一个Excel模板( .xlst
)。 那么,我需要改变的只是改变这一行代码:
ExcelWorkbook = ExcelApp.Workbooks.Open(PathToTemplateSheet)
至:
ExcelWorkbook = ExcelApp.Workbooks.Add(PathToTemplateSheet)
它所做的是根据模板创build一个新的工作簿,因此可以根据需要多次创build,而不会导致实际的原始模板文件被特定的用户打开。
希望这可以帮助别人!