【发布时间】: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 已被其他用户打开。
我的问题是什么是能够打开模板表的多个副本而不会给用户造成任何问题/覆盖旧的以防万一他们需要它的最佳方式是什么?
我理想的解决方案是只给用户一个新的、未保存的工作簿,只在他们的桌面上打开,然后他们可以将它保存在他们想要的任何地方/如果他们不想的话,根本不保存它。
我想我可以这样做:
- 创建一个新的空白工作簿:
ExcelApp.Workbooks.Add - 如上打开模板
- 将所有工作表从一个复制到另一个
- 关闭模板
但是,如果模板大小合适,那么这将占用大量处理器资源,我希望有更好的方法来完成此任务。
谢谢!!
【问题讨论】:
标签: c# vb.net excel templates interop