码迷,mamicode.com
首页 > 其他好文 > 详细

使用版本重定向解决以COM方式调用Excel程序集版本不一致问题

时间:2016-09-26 13:04:33      阅读:428      评论:0      收藏:0      [点我收藏+]

标签:

以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程序集版本不一致问题

标签:

原文地址:http://www.cnblogs.com/wangcm/p/5908404.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!