Tôi đang cố gắng tạo một chương trình xóa các cột trong một Tập dữ liệu được điền bởi một tệp excel. Cách nó xóa cột là nó so sánh tiêu đề trong mỗi cột với phần tử đầu tiên trong mỗi hàng và xóa cột của bất kỳ chuỗi nào không xuất hiện trong các hàng. Vấn đề của tôi là tôi nhận được một lỗi lạ mà tôi không thể hiểu được. nó nói:Lệnh gọi hàm tạo trên kiểu khớp với ràng buộc ràng buộc đã chỉ định đã ném ra một ngoại lệ
Gọi hàm tạo trên loại 'Excel_Retriever.MainWindow' khớp với ràng buộc ràng buộc đã chỉ định đã ném ngoại lệ '. Dòng số '3' và vị trí dòng '9'.
Tôi mới sử dụng C# và XAML và thực sự đánh giá cao mọi trợ giúp giải quyết lỗi này. Cảm ơn bạn! Đây là mã của tôi:
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;
}
}
}
Luôn ngắt kết nối và bộ điều hợp với khối sử dụng. – abatishchev