最近在做一个C#的项目,里面涉及到excel的操作,从网上找来的例子代码,它是基于frameworks 2写的,它对excel的操作是references了一个Interop.Excel,在代码中按如下操作:
//建立Excel对象
Excel.Application excel = new Excel.Application();
excel.Application.Workbooks.Add(true);
excel.Visible = true;
//生成字段名称
for (int i = 0; i < view.ColumnCount; i++)
{
excel.Cells[1, i + 1] = view.Columns[i].HeaderText;
}
一开始是没有任何问题的,由于我用了irisskin4后,为了与之配合,我把frameworks 2改成了frameworks 4,而后使用excel操作的时候就出现了以下的报错:
错误:未能加载文件或程序集“Office, Version=2.1.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。
开始从网上找解决方法:
原因:程序中使用的Excel.dll是office2003的程序集生成的, 我服务器上安装的是office2007,版本不匹配。
解决方案:把office2007目录下的Excel.exe重新生成Excel.dll ,工具是TlbImp.exe ,安装Visual Studio的各版本都有。
方法:1.本人的是VS2010,TlbImp.exe在目录G:\Program Files\Microsoft SDKs\Windows\v7.0A\bin下,在系统控制台转到这个路径,把Excel.exe也拷贝到这个路径下,命令:TlbImp.exe Excel.exe 如图:
在路径下可以找到已经生成的Excel.dll 。好那就拷贝到Bin目录下,加入到项目引用
在执行CMD的时候,需要以管理员身份执行,否则无法得到Excel.dll,依此办法,系统还是报同样的错误,最后的解决办法是:
1、删除原来的Interop.Excel;
2、从COM中加载Mircrosoft Excel 15.0 Object Library;
3、加入
- using Excel = Microsoft.Office.Interop.Excel;
问题解决