Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Excel互操作-在隐藏主工作簿的同时创建可见工作簿_C#_.net_Vb.net_Interop - Fatal编程技术网

C# Excel互操作-在隐藏主工作簿的同时创建可见工作簿

C# Excel互操作-在隐藏主工作簿的同时创建可见工作簿,c#,.net,vb.net,interop,C#,.net,Vb.net,Interop,假设我在WinForms应用程序中设置了以下内容: Dim ExcelApp As Microsoft.Office.Interop.Excel.Application Dim ExcelWorkbook As Microsoft.Office.Interop.Excel.Workbook Dim wksDataVals As Microsoft.Office.Interop.Excel.Worksheet ExcelApp.Visible = False 基本上,我有一个不可见的Excel

假设我在WinForms应用程序中设置了以下内容:

Dim ExcelApp As Microsoft.Office.Interop.Excel.Application
Dim ExcelWorkbook As Microsoft.Office.Interop.Excel.Workbook
Dim wksDataVals As Microsoft.Office.Interop.Excel.Worksheet

ExcelApp.Visible = False
基本上,我有一个不可见的Excel实例在后台运行,其中有一个打开的工作簿,名为
ExcelWorkbook
,还有一个应用程序正在处理的工作表,名为
wksDataVals
。用户通过userform操作此工作表(以及其他工作表),并看到基于这些操作的一些输出

现在,在我的表单上,我有一个按钮
Show Excel Sheet
,用户单击该按钮后,我希望在新的独立工作簿中向他们显示wksDataVals的副本,同时将原始文件隐藏在后台以备进一步的数据操作。我相信我需要通过创建一个新的Excel实例来做到这一点,因为我想隐藏这个实例

有没有比以下更好的方法:

  • 保存工作表
  • 创建新的(可见的)Excel实例
  • 在该实例中重新打开工作表
  • (由于我希望工作表在另一个Excel实例中保持打开状态,因此工作表现在只能是只读的,这会造成问题)-我知道我可以通过再次将工作表重新保存为新名称来克服这一问题,但这一切似乎都有些过头了

    关于如何以最简单的方式实现这一点,有什么想法吗也许有一种方法可以在内部保存工作簿/工作表并将其提供给新的Excel实例,而不是让Excel尝试打开保存的工作表


    谢谢

    为了回答我自己的问题,以防有人向他们提出同样的问题(请专家们,如果你有更好的方法,请告诉我),我最后做的是:

  • 创建Excel的新实例
  • 在该实例中创建一个空白的新工作簿
  • 从隐藏的工作表复制我关心的范围
  • 将它粘贴到新工作簿上(在我的例子中,值和格式是我想要的)
  • 使Excel的新实例可见
  • 将对新应用程序实例、工作簿、工作表等的引用设置为nothing,因此现在它不再连接到我的程序
  • 似乎做得很好