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