Excel Interop(插入图像)在Windows Server 2012 R2中

我们正在将我们的Web应用程序从Windows 2003迁移到Windows 2012 R2。

该应用程序具有Excel报告function。 我们使用Interop打开excel(模板文件)并写入一些数据,并从服务器中的特定文件夹插入图像。

MS Office版本是2007.奇怪的是插入图像function仅适用于图像大小小于20 kb,只要应用程序试图插入大于20 kb像250 kb的图像,系统挂起,如果它没有得到足够的内存来完成这项工作,并在任务pipe理器中挂起excel.exe。

在Dcomcnfg中,excel正在“启动用户”身份下运行。

IIS应用程序池正在使用networking服务来运行该应用程序。

插入图像的代码如下所示,但是因为它在Windows 2003中工作,所以我们没有改变任何东西

public void InsertImage(string imagePath, float leftPosition, float topPosition, float imageWidth, float heightImage) { if (!File.Exists(imagePath)) throw new OfficeHelperException(OfficeHelperException.ExceptionType.ImageFileNotFound); WorkingSheet.Shapes.AddPicture( imagePath, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, leftPosition, topPosition, imageWidth, heightImage); } 

有没有在新的Windows 2012 R2的内存分配设置? 该Web应用程序有其他Excel报告,没有图像导出,他们工作正常。

我们试图通过在模板文件中放入一个macros来删除这个插入图像的function,这个模板文件将插入图像并从互操作中调用macros。 它在本地机器上工作,但是在服务器上,当图像大小超过20kb时,它会挂起。

我们坚持这一点,不知道任何已知的问题与Windows Server 2012 R2有关的Excel Interop。 任何build议将不胜感激。

我设置真正的参数MsoTriState LinkToFile和工作正常! 我正在使用Win 2012 R2和Excel 2010 x64。

例如:

 oHoja.Shapes.AddPicture(HttpContext.Current.Server.MapPath("~/images/logos/57/teix.png", MsoTriState.msoCTrue, MsoTriState.msoCTrue,float.Parse(3.ToString()), float.Parse(65.ToString()), float.Parse("113"), float.Parse("54")); 

祝你好运!

我们也有同样的问题。 我通过安装MS Office 2013来修复它。