Vsto Excel工作簿 如何关闭当前工作簿后打开指定的工作簿

时间:2021-10-24 09:38:27
在vsto Excel程序里面调用winform程序,
Winform窗体的按钮事件
private void btnhtstyle_Click(object sender, EventArgs e)
       {
         string name ="C:\\合同样式.xls";         
          Globals.ThisWorkbook.Close(false, Type.Missing, Type.Missing);
            //object filename = Globals.ThisWorkbook.Name;
           //Globals.ThisWorkbook.CloseWorkBook(filename);
          Globals.ThisWorkbook.OpenWorkBook(name);这句不执行,为什么?如果不执行close 方法就会报错
    }

错误:名为“ExcelWorkbook6.xls”的文档已经打开。不能同时打开同名文件,无论它们是否在同一文件夹中。
要打开第二份文档,请关闭已经打开的文档,或者重新命名其中的一个文档。


ThisWorkBook.cs
//打开指定工作簿
       public void OpenWorkBook(string fileName)
       {
              this.Application.Workbooks.Open(fileName,
           missing, missing, missing, missing, missing, missing, missing,
           missing, missing, missing, missing, missing, missing, missing);
       }
 //关闭指定工作簿
        public void CloseWorkBook(object fileName)
        {
           // object fileName = "ExcelWorkbook6.xls";           
            Excel.Workbook workbook = this.Application.Workbooks.get_Item(fileName);
            workbook.Close(false, missing, missing);
        }
我在vsto里面做自定义报表, 用户将Excel报表模板设计好,点击保存按钮保存为.xls文件,我再点击打开按钮时关闭当前工作簿,重新打开保存的工作簿并开始向工作簿里面写入数据……   可是我关闭工作簿以后就无法打开指定名称的工作簿,该如何解决,请高手指点   如果不写关闭的话,就说存在相同的ExcelWookBook程序,无法打开

10 个解决方案

#1


应该是有些资源 没释放掉!!

#2


不会,帮顶下

#3


引用 1 楼 mmm306306 的回复:
应该是有些资源 没释放掉!!
 
资源没释放???? 可是为什么我关闭当前的Excel工作簿程序,下面那句打开指定工作簿程序的代码就无法执行了呢……

#4


独占方式打开的

这个问题office本身就有,一个文件被一个人打开,另外一个人只能以只读副本形式再打开

#5


那能对副本进行操作么?  保存副本是直接能够 ThisApplication.Save()
还是应该SaveCopAs()

可是就算已只读副本打开也得让我打开啊,如果关闭程序重新打开的话,重新打开那代码根本不执行,不重新打开的就抛已存在程序错误

我关闭当前的然后再重新打开一个该怎么处理

#6


        用户打开Excel工作簿程序进行报表的格式设置,然后点击自定义按钮弹出winform窗体,点保存按钮保存当前报表的格式,生成 **.xls文件, 点击另外一个其他报表样式按钮,关闭当前的工作簿重新打开其他报表样式的.xls文件来加载数据……
   就是 vsto自定义报表格式   我应该怎么做……

#7


该回复于2017-06-09 16:56:26被管理员删除

#8


............以后拜托及时一点。。。。09年的贴10年的群。。。我早挂了

#9



友情帮顶下!顺便学习学习!

#10


............................结贴

#1


应该是有些资源 没释放掉!!

#2


不会,帮顶下

#3


引用 1 楼 mmm306306 的回复:
应该是有些资源 没释放掉!!
 
资源没释放???? 可是为什么我关闭当前的Excel工作簿程序,下面那句打开指定工作簿程序的代码就无法执行了呢……

#4


独占方式打开的

这个问题office本身就有,一个文件被一个人打开,另外一个人只能以只读副本形式再打开

#5


那能对副本进行操作么?  保存副本是直接能够 ThisApplication.Save()
还是应该SaveCopAs()

可是就算已只读副本打开也得让我打开啊,如果关闭程序重新打开的话,重新打开那代码根本不执行,不重新打开的就抛已存在程序错误

我关闭当前的然后再重新打开一个该怎么处理

#6


        用户打开Excel工作簿程序进行报表的格式设置,然后点击自定义按钮弹出winform窗体,点保存按钮保存当前报表的格式,生成 **.xls文件, 点击另外一个其他报表样式按钮,关闭当前的工作簿重新打开其他报表样式的.xls文件来加载数据……
   就是 vsto自定义报表格式   我应该怎么做……

#7


该回复于2017-06-09 16:56:26被管理员删除

#8


............以后拜托及时一点。。。。09年的贴10年的群。。。我早挂了

#9



友情帮顶下!顺便学习学习!

#10


............................结贴