Importer Excel avec OleDbDataAdapter en C # Avec la modification des noms des colonnes

Bonjour, j'essaie d'importer un document Excel dans DataGridView dans C #. Jusqu'à maintenant, il fonctionnait mais il y a une colonne avec des données. Je dois "sortinger".

Si c'était simple, je ferais "WHERE test> 0" dans la requête OleDbDataAdapter.

Mais … Le nom de la colonne change avec chaque document et je dois l'utiliser souvent. Jusqu'à présent, j'ai compris:

private void button1_Click(object sender, EventArgs e) { Ssortingng strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=C:\\Users\\Test\\Desktop\\Test.xls;" + "Extended Properties=Excel 8.0;"; DataSet ds = new DataSet(); OleDbDataAdapter da = new OleDbDataAdapter ("SELECT * FROM [Test$]", strConn); da.Fill(ds); dataGridView1.DataSource = ds.Tables[0].DefaultView; } 

Dans le choix, j'ai besoin de mettre une ligne witch indiquant que les 3 premières lettres de la colonne sont les mêmes, mais le nombre qui suit n'est pas. Comme:

QTA 12345, QTA 13213, QTA 92818.

Quelque chose comme:

  OleDbDataAdapter da = new OleDbDataAdapter ("SELECT * FROM [Test$] WHERE [testColumn] > 0", strConn); 

Mais ensuite avec les mêmes 3 premières lettres et les derniers numbers qui sont randoms.

Quelqu'un peut-il m'aider s'il vous plaît?

J'ai essayé un code et ça marche bien pour moi. Essaye:

 OleDbConnection oleDbConnection = new OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=D:\\Users\\name\\Desktop\\test.xls;" + "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"); oleDbConnection.Open(); //Get columns DataTable dtColumns = oleDbConnection.GetSchema("Columns", new ssortingng[] { null, null, "Tabelle1$", null }); List<ssortingng> columns = new List<ssortingng>(); foreach (DataRow dr in dtColumns.Rows) columns.Add(dr[3].ToSsortingng()); ssortingng colName = columns.Find(item => item.Subssortingng(0,3) == "QTA"); DataSet ds = new DataSet(); OleDbDataAdapter da = new OleDbDataAdapter ("SELECT * FROM [Tabelle1$] WHERE [" + colName + "] > 0", oleDbConnection); da.Fill(ds); dataGrid1.ItemsSource = ds.Tables[0].DefaultView; oleDbConnection.Close(); 

Faites attention à changer la string de connection à vos besoins.

Vous pouvez couper le code en utilisant LINQ:

 ssortingng colName = (from DataRow dr in dtColumns.Rows where dr[3].ToSsortingng().Subssortingng(0, 3) == "QTA" select dr[3].ToSsortingng()).ElementAt(0);