采用该方式可以控制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元件,如Interop Word或Excel,可能会遇到权限问题...遵循这些配置指南,可以有效地解决IIS上运行基于Office的COM组件时出现的错误,如“80080005 服务器执行失败”和“80070005 访问被拒”。
微软Office Online服务是一种基于云端的解决方案,允许用户在网页浏览器中直接查看、编辑和协作处理Microsoft Office文档,如Word、Excel、PowerPoint等,而无需安装任何桌面应用程序。本教程将详细阐述如何安装和...
6. **部署和配置**:ASP.NET应用程序可以轻松部署在IIS(Internet Information Services)上,开发者需要了解如何配置IIS以支持WebOffice的运行,包括设置应用程序池、URL重写规则等。 7. **数据库集成**:Web...
首先,部署环境是基于Windows Server 2008 Enterprise Edition,域名为sh.com,域控制器cndc承担了AD(活动目录)、DNS、SQL Server 2008 CN、IIS以及证书服务器的角色。OCS服务器命名为cnpool,属于Pool:pool.sh....
JAVA-COM Bridge允许Java应用程序直接调用COM组件,从而访问和处理基于COM的数据源,如Microsoft Office文档(Word、Excel等)。通过这种方式,Java应用可以集成非结构化的数据,比如Word文档中的表格和文本,Excel...
4. **配置SharePoint**:设置服务器场、配置服务应用程序池和服务实例。 5. **创建网站集合**:定义顶级网站,并设置权限和管理选项。 **三、网站与站点集合作用** 在SharePoint 2007中,**网站**是信息组织的基本...
MOSS 2007 与 Office 客户端应用程序(如 Word、Excel 和 PowerPoint)紧密集成,支持协同编辑、实时通信和数据共享。 12. **性能优化和维护** 为了确保 MOSS 2007 的稳定运行,需关注性能监控、定期备份、更新...
此外,可能还需要调整IIS设置,如信任级别和应用程序池配置,以允许执行COM交互。 总结,这个"基于WebForm的操作Word文档实例配套源码"是一个很好的学习资源,它展示了如何在Web环境下利用.NET的COM互操作性操作...
1. **基于 Jakarta POI**:DBCP 基于Jakarta POI,它是一个处理微软 Office 文件格式的开源库,这使得 DBCP 能够处理多种数据库驱动。 2. **连接管理**:与 c3p0 类似,DBCP 也负责创建、管理和回收数据库连接,...
- **IIS服务器**:使用IIS(Internet Information Services)作为ASP的Web服务器,配置站点、应用程序池等。 - **错误处理**:设置全局错误捕获和日志记录,便于定位和解决问题。 - **版本控制**:使用Git等工具...
* 快速的应用程序开发:提供了一系列新的功能,包括对Microsoft Office的支持,提高了系统开发的速度和效率。 * 改进的调试功能:提供了更加强大的调试功能,能够快速地定位和解决系统中的错误。 2.2 ORACLE数据库 ...
OA(Office Automation)办公系统是利用信息技术实现内部办公流程自动化的一种软件系统,旨在提升工作效率,优化工作流程,减少人为错误。本篇文章将深入探讨基于Java开发OA办公系统的相关知识点。 一、Java技术栈 ...
OA(Office Automation)协同办公系统是现代企业信息化建设的重要组成部分,它涵盖了日常办公中的各种流程,如文档管理、工作流审批、任务分配、会议安排、公告通知等。通过协同办公,员工可以高效地进行信息交换和...
- **Farm和Web应用程序**:Farm是SharePoint服务器的集合,Web应用程序则定义了IIS的应用池和数据库关联。 ### 4. **服务应用程序** - **Search Service**:提供全文搜索功能,可以对文档内容、属性进行搜索。 - **...
这通常包括Apache POI(用于处理Microsoft Office格式)和JODConverter(一个基于OpenOffice的Java文档转换工具)。在集成过程中,确保正确配置了OpenOffice的服务端口,以便Java程序能够与OpenOffice进程通信。 在...
比如,Office组件之间的交互、ActiveX控件的实现,以及许多系统级服务都是基于COM或COM+构建的。掌握这些技术,对于提升Windows平台上的软件开发能力至关重要。通过阅读《COM 与 COM+ 从入门到精通.pdf》这本书,你...
JavaMail 使用SMTP(Simple Mail Transfer Protocol)协议来发送邮件,而通过POP3(Post Office Protocol)或IMAP(Internet Message Access Protocol)协议来接收邮件。SMTP用于从应用程序到邮件服务器的传输,而...
1. **网络服务账户权限**:确保IIS应用程序池使用的网络服务账户具有足够的权限访问Excel文件所在的目录。 2. **COM+组件注册**:在IIS服务器上注册Office Interop组件,确保其可以在非交互模式下运行。 3. **安全...
- **POP3(Post Office Protocol Version 3)**: POP3用于从邮件服务器接收邮件。本邮件服务器实现了POP3协议,支持邮件的接收功能。 #### 总结与展望 本文介绍了一种基于Java技术的邮件服务器设计方案及其关键...
这个压缩包包含的是一个基于Java实现的可配置抽奖程序的源码及相关类库。开发者在年前分享了抽奖程序的源代码,现在为了使程序能够正常运行,提供了必要的依赖库。这些类库对于理解和运行该抽奖程序至关重要。 首先...