`
johnhzjx
  • 浏览: 38996 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于OFFICE COM的程序池

 
阅读更多
采用该方式可以控制WORD的进程数,加快调用的速度。但是验证中发现更多的进程并不会加速整体的响应速度,由于WORD的处理需要消耗大量的CPU,因此采用该方式可以限制WORD的处理对CPU的消耗(虽然原先想提供WORD的处理的并发效率)

    public class OfficePoolUtil
    {
        private static WordAppPool[] wordAppPools;
        public static int createWordAppPool(int iRate)
        {
            //int iCpuCount = Convert.ToInt32(System.Environment.GetEnvironmentVariable("NUMBER_OF_PROCESSORS"));
            //iCpuCount = iCpuCount * iRate;
            //wordAppPools = new WordAppPool[iCpuCount];
            int iCpuCount = iRate;
            wordAppPools = new WordAppPool[iCpuCount];
            for (int i = 0; i < iCpuCount; i++)
            {
                wordAppPools[i] = new WordAppPool();
                wordAppPools[i].ap_wordAppInstance = new Word.ApplicationClass();
                wordAppPools[i].ap_wordAppInstance.Visible = false;
                wordAppPools[i].ap_wordAppInstance.ScreenUpdating = false;
                wordAppPools[i].ap_count = 0;
                //wordAppPools[i].ap_isFree = true;
            }
            return iCpuCount;
        }

        public static void cleanWordAppPool()
        {
            object savechange = Word.WdSaveOptions.wdDoNotSaveChanges;
            Object missing = Missing.Value;

            for (int j = 0; j < wordAppPools.Length; j++)
            {
                wordAppPools[j].ap_wordAppInstance.Quit(ref savechange, ref missing, ref missing);
                ReleaseCOM(wordAppPools[j].ap_wordAppInstance);
                wordAppPools[j].ap_wordAppInstance = null;

            }
            wordAppPools = null;
        }

        public static Word.ApplicationClass getWordAppInstance()
        {
            int iMin = wordAppPools[0].ap_count;
            int iIndex = 0;
            for (int j = 1; j < wordAppPools.Length; j++)
            {
                if (iMin > wordAppPools[j].ap_count)
                {
                    iMin = wordAppPools[j].ap_count;
                    iIndex = j;
                }
            }
            wordAppPools[iIndex].ap_count++;
            return wordAppPools[iIndex].ap_wordAppInstance;

        }

        private static void ReleaseCOM(object o)
        {
            try
            {
                //System.Runtime.InteropServices.Marshal.ReleaseComObject(o);
                System.Runtime.InteropServices.Marshal.FinalReleaseComObject(o);
            }
            catch
            {
            }
            finally
            {
                o = null;
            }
        }

    }


    public class WordAppPool
    {
        /// <summary>
        /// word app
        /// </summary>
        public Word.ApplicationClass ap_wordAppInstance;

        public bool ap_isFree;

        public Int32 ap_count;
    }


调用方式
                    wordDoc = OfficePoolUtil.getWordAppInstance().Documents.Open(ref Filename,
......
分享到:
评论

相关推荐

    在IIS上存取使用Office COM元件.docx

    在IIS上存取使用Office COM元件,如Interop Word或Excel,可能会遇到权限问题...遵循这些配置指南,可以有效地解决IIS上运行基于Office的COM组件时出现的错误,如“80080005 服务器执行失败”和“80070005 访问被拒”。

    微软Office Online服务安装部署代码

    微软Office Online服务是一种基于云端的解决方案,允许用户在网页浏览器中直接查看、编辑和协作处理Microsoft Office文档,如Word、Excel、PowerPoint等,而无需安装任何桌面应用程序。本教程将详细阐述如何安装和...

    weboffice

    6. **部署和配置**:ASP.NET应用程序可以轻松部署在IIS(Internet Information Services)上,开发者需要了解如何配置IIS以支持WebOffice的运行,包括设置应用程序池、URL重写规则等。 7. **数据库集成**:Web...

    Microsoft Office communication server 2007 R2部署

    首先,部署环境是基于Windows Server 2008 Enterprise Edition,域名为sh.com,域控制器cndc承担了AD(活动目录)、DNS、SQL Server 2008 CN、IIS以及证书服务器的角色。OCS服务器命名为cnpool,属于Pool:pool.sh....

    基于JAVA-COM Bridge与J2EE连接器的COM数据源信息获取.pdf

    JAVA-COM Bridge允许Java应用程序直接调用COM组件,从而访问和处理基于COM的数据源,如Microsoft Office文档(Word、Excel等)。通过这种方式,Java应用可以集成非结构化的数据,比如Word文档中的表格和文本,Excel...

    Microsoft Office SharePoint Server 2007教程(CHM)

    4. **配置SharePoint**:设置服务器场、配置服务应用程序池和服务实例。 5. **创建网站集合**:定义顶级网站,并设置权限和管理选项。 **三、网站与站点集合作用** 在SharePoint 2007中,**网站**是信息组织的基本...

    Office SharePoint Server 2007 部署图示指南

    MOSS 2007 与 Office 客户端应用程序(如 Word、Excel 和 PowerPoint)紧密集成,支持协同编辑、实时通信和数据共享。 12. **性能优化和维护** 为了确保 MOSS 2007 的稳定运行,需关注性能监控、定期备份、更新...

    基于WebForm的操作Word文档实例配套源码

    此外,可能还需要调整IIS设置,如信任级别和应用程序池配置,以允许执行COM交互。 总结,这个"基于WebForm的操作Word文档实例配套源码"是一个很好的学习资源,它展示了如何在Web环境下利用.NET的COM互操作性操作...

    数据库连接池

    1. **基于 Jakarta POI**:DBCP 基于Jakarta POI,它是一个处理微软 Office 文件格式的开源库,这使得 DBCP 能够处理多种数据库驱动。 2. **连接管理**:与 c3p0 类似,DBCP 也负责创建、管理和回收数据库连接,...

    基于ASP网络办公OA系统设计(论代码)

    - **IIS服务器**:使用IIS(Internet Information Services)作为ASP的Web服务器,配置站点、应用程序池等。 - **错误处理**:设置全局错误捕获和日志记录,便于定位和解决问题。 - **版本控制**:使用Git等工具...

    基于ORACLE的核安全立法管理信息系统平台界面设计.pdf

    * 快速的应用程序开发:提供了一系列新的功能,包括对Microsoft Office的支持,提高了系统开发的速度和效率。 * 改进的调试功能:提供了更加强大的调试功能,能够快速地定位和解决系统中的错误。 2.2 ORACLE数据库 ...

    基于java的办公系统

    OA(Office Automation)办公系统是利用信息技术实现内部办公流程自动化的一种软件系统,旨在提升工作效率,优化工作流程,减少人为错误。本篇文章将深入探讨基于Java开发OA办公系统的相关知识点。 一、Java技术栈 ...

    基于javaC/S的oa协同办公系统

    OA(Office Automation)协同办公系统是现代企业信息化建设的重要组成部分,它涵盖了日常办公中的各种流程,如文档管理、工作流审批、任务分配、会议安排、公告通知等。通过协同办公,员工可以高效地进行信息交换和...

    Office SharePoint Server 2007基础架构和规划完全中文版

    - **Farm和Web应用程序**:Farm是SharePoint服务器的集合,Web应用程序则定义了IIS的应用池和数据库关联。 ### 4. **服务应用程序** - **Search Service**:提供全文搜索功能,可以对文档内容、属性进行搜索。 - **...

    OpenOffice转换成Pdf

    这通常包括Apache POI(用于处理Microsoft Office格式)和JODConverter(一个基于OpenOffice的Java文档转换工具)。在集成过程中,确保正确配置了OpenOffice的服务端口,以便Java程序能够与OpenOffice进程通信。 在...

    COM与COM+从入门到精通

    比如,Office组件之间的交互、ActiveX控件的实现,以及许多系统级服务都是基于COM或COM+构建的。掌握这些技术,对于提升Windows平台上的软件开发能力至关重要。通过阅读《COM 与 COM+ 从入门到精通.pdf》这本书,你...

    基于Javamail的邮件收发系统-project

    JavaMail 使用SMTP(Simple Mail Transfer Protocol)协议来发送邮件,而通过POP3(Post Office Protocol)或IMAP(Internet Message Access Protocol)协议来接收邮件。SMTP用于从应用程序到邮件服务器的传输,而...

    c#操作excel实例,excel的iis权限设置

    1. **网络服务账户权限**:确保IIS应用程序池使用的网络服务账户具有足够的权限访问Excel文件所在的目录。 2. **COM+组件注册**:在IIS服务器上注册Office Interop组件,确保其可以在非交互模式下运行。 3. **安全...

    基于Java的邮件服务器的设计与实现

    - **POP3(Post Office Protocol Version 3)**: POP3用于从邮件服务器接收邮件。本邮件服务器实现了POP3协议,支持邮件的接收功能。 #### 总结与展望 本文介绍了一种基于Java技术的邮件服务器设计方案及其关键...

    java写的可配置的抽奖程序源码,所对应的类库集合

    这个压缩包包含的是一个基于Java实现的可配置抽奖程序的源码及相关类库。开发者在年前分享了抽奖程序的源代码,现在为了使程序能够正常运行,提供了必要的依赖库。这些类库对于理解和运行该抽奖程序至关重要。 首先...

Global site tag (gtag.js) - Google Analytics