WPF excel interop error.'Window'是'System.Windows.Window'和'Microsoft.Office.Interop.Excel.Window'

我写了一个小程序来从wpf中的excel文件中提取数据。 但我得到这个错误: '窗口'是'System.Windows.Window'和Microsoft.Office.Interop.Excel.Window'之间的歧义参考。

为什么发生? 我的代码如下:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using Microsoft.Office.Interop.Excel; namespace FileReader { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook xlWb; Microsoft.Office.Interop.Excel.Worksheet xlWsheet; private void excel_Click(object sender, RoutedEventArgs e) { try { xlWb = xlApp.Workbooks.Open("C:\\Config.xlsm", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); xlWsheet = (Worksheet)xlWb.Sheets["Startup"]; Range xlRange = xlWsheet.UsedRange; for (int rownum = 0; rownum <= 31; rownum++) { xlRange = xlWsheet.Cells[rownum + 2, 24]; d32[rownum] = xlRange.Value.ToString().Substring(2); } } catch (Exception e) { MessageBox.Show("File not found: C:\\Config.xlsm","File not found",MessageBoxButton.OK,MessageBoxImage.Warning); } } } 

如错误中所述 – Window类存在于您已使用的两个名称空间中。 所以,你需要使用完全限定的类型名称

更换

 public partial class MainWindow : Window 

 public partial class MainWindow : System.Windows.Window 

或者,您可以使用简写语法来为名称空间声明别名,并使用它来代替完全限定的名称空间。

 using WPFWindow = System.Windows; public partial class MainWindow : WPFWindow.Window 

问题:您已经导入了以下两个具有Window类的名称空间

 using System.Windows; using Microsoft.Office.Interop.Excel; 

因此在使用以下语句时存在歧义问题

 public partial class MainWindow : Window 

解决方案:您可以使用类Window fully qualified name来避免歧义问题。

尝试这个:

 public partial class MainWindow : System.Windows.Window