我的程序中内嵌了一个EXCEL的模版,并在执行中调用一个EXCEL的进程。
在我的程序执行过程中,如果程序外部打开EXCEL则外部的EXCEL无法显示。除非我程序关闭,否则外部EXCEL打不开。何解?

解决方案 »

  1.   

    Office 应用程序是组件对象模型 (COM) 服务器。COM 允许客户端在任意线程上调用 COM 服务器。对于并非线程安全的 COM 服务器,COM 提供一种序列化并发调用的机制,这样无论何时服务器上都只有一个逻辑线程在执行。此机制称为单线程单元 (STA) 模型。因为调用是序列化的,所以服务器正忙时或处理后台线程上的其他调用时调用方可能会被阻塞一段时间。
      

  2.   

    呵呵,顶一下。 你可以将Excel拷贝一份到临时目录,这样绕开同时打开的危险
      

  3.   

    也不是阻塞一段时间,是一直打不开。
    以下是相关代码,请参考,谢谢各位:
    ExcelCOM excel = null;
    excel = new ExcelCOM();
    excel.SetCell(r,2,dr[0].ToString());
    excel.CloseXLS();
      

  4.   

    请使用这种方法试一下:
    打开Excel,工具\选项\常规\
    其下有一个,设置,选择:忽略其他应用程序,保存
      

  5.   

    试了,改完后,双击任何一个Excel文件都报错,提示找不到文件