使用版本重定向解决以COM方式调用Excel程序集版本不一致问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用版本重定向解决以COM方式调用Excel程序集版本不一致问题相关的知识,希望对你有一定的参考价值。
以COM方式调用Excel,由于开发环境与目标终端程序集版本的不一致,导致目标端程序无法使用。
下面调用COM组件打开Excel文件。如图,先在开发环境添加COM引用
代码如下:
using System; using System.ComponentModel; using System.Windows.Forms; namespace WindowsFormsApplication4 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "*.xls|*.xls|*.xlsx|*.xlsx"; dialog.Multiselect = false; dialog.FileOk += Dialog_FileOk; dialog.ShowDialog(); } private void Dialog_FileOk(object sender, CancelEventArgs e) { OpenFileDialog dialog = sender as OpenFileDialog; if (dialog != null) { String FileName = dialog.FileName; Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); excel.Visible = true; Microsoft.Office.Interop.Excel.Workbooks books = excel.Workbooks; books.Open(FileName); //excel.Quit(); } } } }
将编译后的程序XCOPY到客户端,执行报错信息如下:
提示未能加载文件或程序集”Microsoft.Office.Interop.Excel,Version=15.0.0.0”,该程序集版本为开发环境下的版本,如图
而目标环境中该程序集版本为12.0.0.0
在目标环境中添加可配置文件WindowsFormsApplication4.exe.config文件
内容如下:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Microsoft.Office.Interop.Excel" publicKeyToken="71e9bce111e9429c" culture="neutral" /> <bindingRedirect oldVersion="15.0.0.0" newVersion="12.0.0.0"/> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
通过配置文件,重定向程序集版本,如下,旧版:15.0.0.0为开发环境版本,新版:12.0.0.0为目标环境版本。通过版本重定向后,目标终可以操作Excel文件了。
以上是关于使用版本重定向解决以COM方式调用Excel程序集版本不一致问题的主要内容,如果未能解决你的问题,请参考以下文章