In primo luogo, voglio dire che sono in acque profonde qui, poiché sto solo apportando alcune modifiche al codice che è stato scritto da qualcun altro in azienda, usando OleDbDataAdapter per "parlare" con Excel e non mi è familiare. C'è un bug che non riesco a seguire.Problema con l'utilizzo di OleDbDataAdapter per recuperare i dati da un foglio Excel
Sto cercando di utilizzare un OleDbDataAdapter per leggere in un file excel con circa 450 righe.
Nel codice si è fatto in questo modo:
connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source='" + path + "';" + "Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1;\"");
connection.Open();
OleDbDataAdapter objAdapter = new OleDbDataAdapter(objCommand.CommandText, connection);
objAdapter.Fill(objDataSet, "Excel");
foreach (DataColumn dataColumn in objTable.Columns) {
if (dataColumn.Ordinal > objDataSet.Tables[0].Columns.Count - 1) {
objDataSet.Tables[0].Columns.Add();
}
objDataSet.Tables[0].Columns[dataColumn.Ordinal].ColumnName = dataColumn.ColumnName;
objImport.Columns.Add(dataColumn.ColumnName);
}
foreach (DataRow dataRow in objDataSet.Tables[0].Rows) {
...
}
Tutto sembra funzionare bene, tranne che per una cosa. La seconda colonna è piena di numeri per lo più a quattro cifre, come 6739, 3920 e così uno, ma le righe di un utente hanno valori alfanumerici come 8201NO e 8205NO. Quelle cinque celle sono segnalate come aventi contenuto vuoto invece del loro contenuto alfanumerico. Ho controllato in Excel e tutte le celle in queste colonne sono contrassegnate come Testo.
Questo è un file xls a proposito, e non xlsx.
Qualcuno ha qualche indizio sul motivo per cui queste celle vengono visualizzate come vuote nel DataRow, ma quelle numeriche vengono visualizzate correttamente? Ci sono altre colonne con contenuto alfanumerico che vengono mostrate bene.
Grazie a tutti per avermi aiutato con questo problema. Mi hai fatto capire perché è successo, quindi ho trovato la soluzione giusta. Continuo a pensare che il modo in cui funziona sia abbastanza orribile, ma questa è un'altra storia :) –