AxFramerControl打开EXCEL后,程序外部的EXCEL无法编辑的问题

问题描述

privateAxDSOFramer.AxFramerControlaxf_Excel=newAxDSOFramer.AxFramerControl();不要把控件直接拖到窗体上,而是使用代码New出来,然后:ThreadthOpen;privatevoidExcelCtrlEx_Load(objectsender,EventArgse){thOpen=newThread(newThreadStart(FOpen));((System.ComponentModel.ISupportInitialize)(this.axf_Excel)).BeginInit();axf_Excel.Dock=System.Windows.Forms.DockStyle.Fill;axf_Excel.Enabled=true;axf_Excel.Location=newSystem.Drawing.Point(0,0);this.spc_Excel.Name="spc_Excel";spc_Excel.Panel1.Controls.Add(axf_Excel);axf_Excel.Titlebar=false;axf_Excel.Menubar=false;axf_Excel.Toolbars=true;((System.ComponentModel.ISupportInitialize)(this.axf_Excel)).EndInit();//启动现成加载EXCELthOpen.Start();}privatevoidFOpen(){lock(axf_Excel){try{axf_Excel.Open(m_strPagePathName,false,"Excel.Sheet","","");xBook=(Workbook)axf_Excel.ActiveDocument;//xSheet=(xBook.Worksheets[1]);xSheet=(Worksheet)xBook.ActiveSheet;}catch(System.Exceptionex){MessageBox.Show(ex.Message.ToString());}}}要点:1、直接使用代码加载,加载的只能是UserControl,或是只要显示的FORM,如果要是在FORM中嵌套FROM,则比被嵌套的FORM就必须设置显示层次,且必须要设置能为非顶级,如果设置为非顶级,着也会出现外部EXCEL无法编辑的情况2、加载的时候,使用异步线程加载,如果不使用,在打开多个时候,会有问题3、在做保存等操作的时候,使用委托异步操作。例如:MethodInvokerIn=newMethodInvoker(SaveOnePage);this.BeginInvoke(In);privatevoidSaveOnePage(){try{axf_Excel.Save();}catch(System.Exceptionex){MessageBox.Show(ex.Message.ToString());}}

解决方案

解决方案二:
谢谢楼主,很有帮助!
解决方案三:
this.spc_Excel.Name="spc_Excel";spc_Excel.Panel1.Controls.Add(axf_Excel);请问this.spc_Excel是什么呀?我把上面两条改成this.panel1.Controls.Add(axf_Excel);然后打开程序后,在外部再打开一个excel两个excel来回操作仍出现锁死。高手请问有源码?QQ:783630253万分感谢

时间: 2024-09-20 01:38:18

AxFramerControl打开EXCEL后,程序外部的EXCEL无法编辑的问题的相关文章

dsoframer.ocx打开EXCEL后,程序外部的EXCEL打开锁死现象

问题描述 dsoframer.ocx打开EXCEL后,程序外部的EXCEL打开锁死现象.请高手帮忙解决一下,万分感谢! 解决方案 解决方案二:程序内部嵌套的excel操作的同时在外部打开excel,两个同时操作不了,经常报错或卡死.解决方案三:正常,占用了同一个资源.IO有没有关闭.那个如果非要实现这样的功能,那就把资源的部分或者全部copy一份处理之后再copy回去,解决方案四:可以把要打开的excel复制到临时文件夹,修改后,在覆盖原文件.如果原文件被占用,提示用户关闭excel文件

android 第二次打开页面后seekbar怎样停留在上次编辑位置

问题描述 android 第二次打开页面后seekbar怎样停留在上次编辑位置 android 第二次打开页面后seekbar怎样停留在上次编辑位置 求大神给个解决方法~ 解决方案 onSaveInstanceState事件中,保存信息http://coolxing.iteye.com/blog/1279447 解决方案二: 之前将相关信息保存下来 解决方案三: 没错,在onStop()方法中调用onSaveInstanceState(),或者直接放在SharedPreferences里面也行

关于C#中操作EXCEL后,关闭对象但EXCEL进程仍然存在的解决办法.

问题描述 自己之前一直被这个问题困扰,也在网上找了很多资料,大部分都是用杀死进程的方法来解决,个人觉得这个太影响代码美观了.今天偶然发现了解决办法.给大家共享一下.现象:我在C#中,需要从EXCEL导入或者导出数据,当导入导出结束后,使用excelApp.Quit()关闭EXCEL对象,但系统进程中仍然存在EXCEL进程.并没有关闭.原因:其实excelApp.Quit();方法是可以正确的释放EXCEL进程的,我们导入导出EXCEL时,普遍方法是代码后台处理,前台并隐藏EXCEL界面,也就是e

浅谈Excel开发(三) Excel 对象模型

前一篇文章介绍了Excel中的菜单系统,在创建完菜单和工具栏之后,就要着手进行功能的开发了.不论您采用何种方式来开发Excel应用程序,了解Excel对象模型尤其重要,这些对象是您与Excel进行交互的基石.据不完全统计,Excel的对象模型中有270多个对象及超过5000多个属性和方法.通过这些对象及方法,您可以充分利用Excel来定制化您的插件. Excel的所有对象,事件,方法和属性在这里不可能全部介绍完.本文简要介绍一下Excel的整体文档对象模型,以及一些比较重要的,平常开发中需要频繁

打开U盘程序的最快速方法

  想快速打开U盘里的程序,下面教你一招. 打开记事本,编辑如下内容: Start "" "工具网络FoxmailFoxmail.EXE" 保存到U盘的根目录下,文件名为"电子邮件.bat",保存类型为"所有文件(*.*)".这样只要双击运行"电子邮件.bat"就可以直接运行Foxmail程序,就和Windows的快捷方式一样.如果你需要用一个快捷方式同时打开多个程序,那么就把编辑内容改为: start &

操作-c#打开excel后在手动打开excel两个excel句柄一样

问题描述 c#打开excel后在手动打开excel两个excel句柄一样 我又重新编辑了一下 1.打开软件 2..点文件打开 3.打开psy++ 4.手动打开了一个excel 5.spy++查看 这个时候我软件本来是要操作之前打开的report.xlsx, 就变成了操作新建 Microsoft Office Excel 2007 Workbook.xlsx了... 下面是打开程序 public static Excel._Application reportExcel; public stati

请教swt操作打开excel后,在非swt打不开excel文件了

问题描述 在eclipse中使用org.eclipse.swt.ole.win32.OLE来操作excel,然后在SWT外部就不能打开excel文件了请教如何规避这个问题,谢谢 解决方案 解决方案二:你是如何操作的,swt可能会把excel基础信息变更,比如文件作者.摘要这种信息,要看你具体代码解决方案三:就是以下代码使用SWT来加载EXCEL,于此同时就不能在桌面上双击Execl文件打开来正常使用excel的功能了哪位大神帮帮我看看,谢谢publicclassmain{publicstatic

winform如何实现导出excel后,打开该excel文件,并在里面再次进行操作?

问题描述 现在业务有个需求.导出2份excel后(内容不同,一份是数据,一份是图片),再将两份的内容统一到一份excel里面,内容分为两个不同的sheet.小弟没对excel操作那么深入.最多也就知道如何导出.可是导出后的读取以及后续操作.实在不知道该如何做!请大家帮个忙!谢谢 解决方案 解决方案二:帮帮忙啊~

在ASP程序中打印Excel报表的新方法

excel|程序|打印 目前,B/S模式(浏览器/服务器模式)成为企业网上首选的计算模式.由于B/S模式的特殊性,在C/S下相对较易实现的Excel报表打印功能在B/S下却成为一个难点.本人通过研究写了一个基于ASP程序的打印Excel报表的程序.本程序的特点是无须任何组件. Print.asp------------------------------------------------ <html><title>打印Excel报表</title><%'控制脚本