J'ai un certain code de lecture de fichier Excel qui utilise le OLEDB (Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;
) qui fonctionne bien mais je rencontre toujours un problème où certaines dates sont renvoyées comme DBNull.Excel DateTime étant retourné comme DBNull
Dans le document XLS original, le format des dates qui travaillent (en-GB locale) sont:
"02/04/2009 17:00:00" // returned as a System.DateTime
Et l'échec style suivant:
"08/Jan/09 11:24 AM" // returned as DBNull
Excel sait qu'ils sont tous les deux dates (bien que je ne peux pas les forcer à style correctement) comme suit montre correctement une date:
=DATE(YEAR(c),MONTH(c),DAY(c)) // where c = cell reference.
Y at-il un moyen, sans altérer l'original généré automatiquement, pour obtenir les données?
EDIT pour référence, voici ma méthode de lecture de données (en supposant un dbAdapter est déjà mis en place - notez le DBNull ne vient pas de la prise qui n'est pas tiré du tout):
public List<List<string>> GetData(string tableName, int maxColumns)
{
List<List<string>> rows = new List<List<string>>();
DataSet ExcelDataSet = new DataSet();
dbCommand.CommandText = @"SELECT * FROM [" + tableName + "]";
dbAdapter.Fill(ExcelDataSet);
DataTable table = ExcelDataSet.Tables[0];
foreach (DataRow row in table.Rows)
{
List<string> data = new List<string>();
for (int column = 0; column < maxColumns; column++)
{
try
{
data.Add(row[column].ToString());
}
catch (Exception)
{
data.Add(null);
}
}
// Stop processing at first blank row
if (string.IsNullOrEmpty(data[0])) break;
rows.Add(data);
}
return rows;
}
Comment exactement obtenez-vous les dates du document XLS? Pourriez-vous poster un extrait de code afin que nous puissions voir ce que vous faites? –