gpt4 book ai didi

c# - 打开模板文件的多个副本(.Net、Excel.Interop)

转载 作者:行者123 更新时间:2023-11-30 20:51:32 25 4
gpt4 key购买 nike

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

但如果模板的大小合适,那将是处理器密集型任务,我希望有更好的方法来完成此任务。

谢谢!!

最佳答案

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

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

ExcelWorkbook = ExcelApp.Workbooks.Open(PathToTemplateSheet)

收件人:

ExcelWorkbook = ExcelApp.Workbooks.Add(PathToTemplateSheet)

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

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

关于c# - 打开模板文件的多个副本(.Net、Excel.Interop),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21560999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com