Bir excel dosyası tarafından doldurulmuş bir DataSet'te sütunları silen bir program yapmaya çalışıyorum. Sütunları silme şekli, her bir sütundaki başlıkları her satırdaki ilk öğe ile karşılaştırır ve satırlarda görünmeyen herhangi bir dizenin sütununu siler. Benim problemim, anlayamadığım garip bir hata alıyorum. diyor ki:Belirtilen bağ kısıtlamalarına uyan türdeki kurucunun çağrılması bir istisna attı
Yapıcının, belirtilen ciltleme kısıtlamalarıyla eşleşen "Excel_Retriever.MainWindow" üzerindeki çağrılması bir istisna attı. Satır numarası '3' ve satır konumu '9'.
C# ve XAML için yeni ve bu hatayı çözme konusunda herhangi bir yardımı gerçekten takdir ediyorum. Teşekkür ederim! İşte benim kodudur:
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;
}
}
}
Wrap Bağlantısı ve Adaptör öğrenmek için başka bir şey. – abatishchev