【问题标题】:WPF excel interop error.'Window' is an ambiguous reference between 'System.Windows.Window' and 'Microsoft.Office.Interop.Excel.Window'WPF excel 互操作错误。'Window' 是 'System.Windows.Window' 和 'Microsoft.Office.Interop.Excel.Window' 之间的模糊引用
【发布时间】:2014-01-09 09:58:24
【问题描述】:

我写了一个小程序来从 wpf 中的 excel 文件中读取数据。但我得到这个错误: 'Window' 是 '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);
        }
    }
}

【问题讨论】:

    标签: c# .net wpf windows excel


    【解决方案1】:

    如错误中所述 - Window 类存在于您使用的两个命名空间中。因此,您需要使用完全限定的类型名称

    替换

    public partial class MainWindow : Window
    

    public partial class MainWindow : System.Windows.Window
    

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      public partial class MainWindow : Window
      

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

      试试这个:

      public partial class MainWindow : System.Windows.Window
      

      【讨论】:

        猜你喜欢
        • 2021-05-12
        • 2022-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多