Bonjour à tous,
J'ai un petit souci lorsque je lis un fichier Excel (.xls) avec OLEDB. Si mon fichier à ses premières lignes vides, alors je ne les récupère pas dans le dataTable correspondant.
Voici mon code :
Avec la connectionString = Provider=Microsoft.ACE.OLEDB.12.0;Data Source=FullPathToFile.xls;Extended Properties="Excel 12.0 XML;IMEX=1;HDR=No"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 DataSet ds = new DataSet(); string connectionString = GetConnectionString(filePath, firstLineAsHeader); using (OleDbConnection conn = new OleDbConnection(connectionString)) { conn.Open(); OleDbCommand cmd = new OleDbCommand(); cmd.Connection = conn; DataTable dtSheet = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); // Get all Sheets in Excel File DataTable dt = null; OleDbDataAdapter da = null; string sheetName = string.Empty; // Loop through all Sheets to get data foreach (DataRow dr in dtSheet.Rows) { sheetName = dr["TABLE_NAME"].ToString(); if (!sheetName.EndsWith("$")) // Les feuilles excel se termine toujours par un '$' continue; cmd.CommandText = "SELECT * FROM [" + sheetName + "]"; // Get all rows from the Sheet dt = new DataTable(sheetName); da = new OleDbDataAdapter(cmd); da.Fill(dt); ds.Tables.Add(dt); } cmd = null; conn.Close(); }
Etant donné que je récupère les données du fichier en fonction des cellules indiquées depuis un fichier de config, j'ai des décalages dans le dataTable.
Est-ce que quelqu'un sait s'il faut indiquer un paramètre supplémentaire dans la connection string pour avoir toutes les lignes, ou si le problème vient dans ma manière de charger le dataTable.
Merci d'avance.
Partager