Вызов конструктора для типа, соответствующего указанным ограничениям привязки, вызвал исключение.

Я пытаюсь написать программу, которая удаляет столбцы в наборе данных, заполненном файлом Excel. Способ удаления столбцов заключается в том, что он сравнивает заголовок в каждом столбце с первым элементом в каждой строке и удаляет столбец любой строки, которая не отображается в строках. Моя проблема в том, что я получаю странную ошибку, которую не могу понять. в нем говорится:

Вызов конструктора для типа «Excel_Retriever.MainWindow», который соответствует указанным ограничениям привязки, вызвал исключение». Номер строки «3» и позиция строки «9».

Я новичок в C# и XAML и был бы признателен за любую помощь в устранении этой ошибки. Спасибо! Вот мой код:

XAML:

<Window x:Class="Excel_Retriever.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid Name="ExcelGrid">
        <DataGrid ItemsSource="{Binding}" AutoGenerateColumns="True" Height="289"        HorizontalAlignment="Left" Margin="10,10,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="481" />
    </Grid>
</Window>

C#:

namespace Excel_Retriever
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            DataSet excel = GetDataTableFromExcel("C:\\Users\\Sweet Lou\\Desktop\\Adjusted research info.xlsx", "Research");
            //dataGrid1.DataContext = excel.Tables[0];
            DataSet ignoreds = Ignore_Names(excel);
            dataGrid1.DataContext = ignoreds.Tables[0];
        }

        public DataSet GetDataTableFromExcel(string FilePath, string strTableName)
        {
            try
            {
                OleDbConnection con = new OleDbConnection("Provider= Microsoft.ACE.OLEDB.12.0;Data Source=" + FilePath + "; Extended Properties=\"Excel 12.0;HDR=YES;\"");
                OleDbDataAdapter da = new OleDbDataAdapter("select * from [Sheet1$]", con);
                DataSet ds = new DataSet();
                da.Fill(ds);
                return ds;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            return null;
        }

        public DataSet Ignore_Names(DataSet sheet)
        {
            DataSet ignoreds = sheet;
            DataColumn columnNames = sheet.Tables[0].Columns["Name"]; //first column with names
            //ignoreds.Tables[0].Columns.Add(columnNames);
            int j = 1;
            for (int i = 0; i < 15; i++) //change 15 to variable
            {
                while (String.Compare(columnNames.Table.Rows[i].ToString(), sheet.Tables[0].Columns[j].ColumnName, true) != 0)
                {
                    ignoreds.Tables[0].Columns.RemoveAt(j);
                    j++;
                }
                j++;
            }
            return ignoreds;
        }
    }
}
6
задан abatishchev 14 June 2012 в 06:24
поделиться