OVH Cloud OVH Cloud

Excel Data to Dataset ...

1 réponse
Avatar
PePiCK
Bonjour tous le monde,

Bon c'est surement pas ce qu'il y a de plus difficile au monde a faire ca...
Mais il reste que je n'arrive pas à le faire fonctionner comme il faut ! :(

J'arrive a me connecter, a mettre des données dans le dataset, mais il ne
mais pas les bon type de champs, donc je perds des données...

Exemple de fichier: 2 colonnes, 1 numéro de produit, 1 prix.

19999999 | 10.00
78888888 | 7.50
abc12345 | 5.00
abc42345 | 2.00

Mais il met ma premiere colonne en double, donc il importe des null pour les
produits alpha...
Peut-on forcer a ce qu'il importe tout en texte, car je ne connais pas le
nombre de colonne que le fichier contient.

Voici le code:

public static DataSet GetDataSetFromExcel(string excelFile, string
excelSheet)
{
OleDbConnection cnn = null;
DataSet ds = null;
OleDbDataAdapter da = null;
OleDbCommand cmd = null;
try
{
String cnnString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source="
+ excelFile + ";Extended Properties=Excel 8.0;";
// Create connection object by using the preceding connection string.
cnn = new OleDbConnection( cnnString );
cnn.Open();
// Create new OleDbCommand to return data from worksheet.
cmd = new OleDbCommand( "SELECT * FROM [" + excelSheet + "]", cnn );
da = new OleDbDataAdapter();
// Pass the Select command to the adapter.
da.SelectCommand = cmd;
// Create new DataSet with information from the worksheet.
ds = new DataSet();
da.Fill( ds );
return ds;
}
catch( Exception ex )
{
return null;
}
finally
{
// Clean up.
if( ds != null )
{
ds.Dispose();
}
if( da != null )
{
da.Dispose();
}
if( cmd != null )
{
cmd.Dispose();
}
if( cnn != null )
{
cnn.Close();
cnn.Dispose();
}
}
}

1 réponse

Avatar
PePiCK
Bon, après m'être calmé un peu, et refait de bonnes recherches, j'ai trouvé
:)
Un lien si jamais ca intéresse quelqu'un !

http://groups.google.ca/groups?q=excel&hl=en&lr=&group=microsoft.public.fr.dotnet.csharp&selmå64XGHgEHA.1392%40TK2MSFTNGP11.phx.gbl&rnum=7

Et voici la nouvelle connectionstring
String cnnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
excelFile +
";Extended Properties="Excel 8.0;HDR=NO;IMEX=1"";

PePiCK

"PePiCK" wrote in message
news:
Bonjour tous le monde,

Bon c'est surement pas ce qu'il y a de plus difficile au monde a faire
ca...
Mais il reste que je n'arrive pas à le faire fonctionner comme il faut !
:(

J'arrive a me connecter, a mettre des données dans le dataset, mais il ne
mais pas les bon type de champs, donc je perds des données...

Exemple de fichier: 2 colonnes, 1 numéro de produit, 1 prix.

19999999 | 10.00
78888888 | 7.50
abc12345 | 5.00
abc42345 | 2.00

Mais il met ma premiere colonne en double, donc il importe des null pour
les produits alpha...
Peut-on forcer a ce qu'il importe tout en texte, car je ne connais pas le
nombre de colonne que le fichier contient.

Voici le code:

public static DataSet GetDataSetFromExcel(string excelFile, string
excelSheet)
{
OleDbConnection cnn = null;
DataSet ds = null;
OleDbDataAdapter da = null;
OleDbCommand cmd = null;
try
{
String cnnString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source="
+ excelFile + ";Extended Properties=Excel 8.0;";
// Create connection object by using the preceding connection string.
cnn = new OleDbConnection( cnnString );
cnn.Open();
// Create new OleDbCommand to return data from worksheet.
cmd = new OleDbCommand( "SELECT * FROM [" + excelSheet + "]", cnn );
da = new OleDbDataAdapter();
// Pass the Select command to the adapter.
da.SelectCommand = cmd;
// Create new DataSet with information from the worksheet.
ds = new DataSet();
da.Fill( ds );
return ds;
}
catch( Exception ex )
{
return null;
}
finally
{
// Clean up.
if( ds != null )
{
ds.Dispose();
}
if( da != null )
{
da.Dispose();
}
if( cmd != null )
{
cmd.Dispose();
}
if( cnn != null )
{
cnn.Close();
cnn.Dispose();
}
}
}