Estoy tratando de crear un programa que elimine columnas en un DataSet que se llena con un archivo de Excel. La forma en que elimina las columnas es que compara el encabezado de cada columna con el primer elemento de cada fila y elimina la columna de cualquier cadena que no aparece en las filas. Mi problema es que estoy obteniendo un error extraño que no puedo entender. dice:La invocación del constructor en el tipo que coincide con las restricciones de enlace especificadas arrojó una excepción
La invocación del constructor en el tipo 'Excel_Retriever.MainWindow' que coincide con las restricciones de enlace especificadas arrojó una excepción. ' Número de línea '3' y posición de línea '9'.
Soy nuevo en C# y XAML y realmente agradecería cualquier ayuda para resolver este error. ¡Gracias! Aquí está mi código:
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;
}
}
}
conexión Wrap y adaptador con un bloque utilizando, de todos modos. – abatishchev