Excel Interop正在从处理文件中删除图像。为什么Excel Interop会在处理文件后删除图像?
我正在使用Excel Interop,没有第三方组件存在(我知道)。 的工作流 - 创建一个文件(模板),填充单元格的副本(目标),改变单选按钮状态
- 创建预先存在.xslm文件(模板)的复印件(目标) 通过Excel的互操作
- 填充靶细胞,改变无线电按钮状态
- 与图像的工作表没有被修改
- 关闭靶
在我的开发机器上,目标文件看起来很棒 - 所有内容都已填充,图像存在。 注意:在我的开发机器上,我正在运行VS2010 IDE中的代码。
在生产机器上 - 所有东西都被填充,但图像不存在。 取而代之,在它的位置出现以下错误: 注意:在生产计算机上,它作为服务运行,其中本地服务帐户。
整个工作簿通过下面的代码打开“与关系ID RID1图像部分在文件中未找到”:
var workbook = workbooks.Open(targetPath
0, false, 5, Type.Missing, Type.Missing, false, XlPlatform.xlWindows, "",
true, false, 0, true, false, false);
请注意,该工作表图像不在代码中操作。
工作簿(和单个工作表)受到保护。但是,受保护的模板在dev中正确处理,但不在生产中。我不认为保护与它有任何关系(但是谁知道,对吗?这是Interop,呃)。
该文件由另一方创建,并且所有组件(即图像)驻留在.xslm结构中,而不是作为另一个服务器的链接。
我已验证该图像在模板文件中的生产机器上可见,但未处理文件中。
为了确认这在打开生产文件时不是问题,我给自己发了一个电子邮件副本,图像仍然不存在。
我也证实,在我的开发机器上,处理过的文件确实有可见的图像。
我不受保护的工作表,并解压缩文件结构。 .jpg文件确实不存在于生产机器的已处理目标中。
还有一点需要注意 - Office 2010安装在我的开发机器上,但安装在生产机器上的Office 2007。因此,我正在使用Office 12 Interop。在任何环境中都不会生成运行时错误。
我正在使用Interop(而不是OpenXml库),因为存在必须填充的ActiveX控件。但请注意,没有一个ActiveX控件存在任何问题 - 它们工作正常。这只是从处理文件中消失的图像文件(它们在模板文件中渲染得很好)。
更新注意:还有其他四个图像文件,所有.emf
在不同的工作表上;他们都被剥夺了。
任何机会Windows服务或ASP.NET应用程序是这样吗? – Yahia 2012-01-13 15:41:59
这是一个Windows服务。啊。互操作服务。 – 2012-01-13 15:46:11
这是您的问题的一部分 - MS不支持Interop服务(请参阅http://support.microsoft.com/default.aspx?scid=kb;EN-US;q257757#kb2)。 – Yahia 2012-01-13 15:54:44