Lire un fichier excel par oledb en .net

Contenu du snippet

Suite à une contrainte lors de mes développements, j'ai développé cette méthode.

En effet, je devais lire un fichier excel sur un serveur (appliWeb) mais je ne pouvais pas installer les assembly "office".

Après des recherches sur le Web, j'ai trouvé pas mal d'exemple me montrant comment faire. Donc j'en profite pour vous le montrer à tous

Source / Exemple :


/// <summary>
		/// Permet de charger le contenue d'une feuille excel dans une DataTable à partir du chemin et le nom de la feuille désirée
		/// </summary>
		/// <param name="strcheminFichier">Chemin du fichier Excel</param>
		/// <param name="strNomFeuilleExcel">Nom de la feuille excel</param>
		/// <returns>DataTable contenant l'ensemble des celulles et lignes du fichier Excel. Si la feuille est vide le retour est égal à "Null"</returns>
		/// <remarks>Aucune gestion d'exception n'est faite à l'intérieur de cette méthode</remarks>
		public DataTable GetfichierFeuilleFichierExcel(string strCheminFichier, string strNomFeuilleExcel)
		{
			// Chaine de connexion
			string strCnx = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strCheminFichier + ";Extended Properties=" + (char)34 + "Excel 8.0;HDR=Yes;" + (char)34 + ";";
			System.Data.DataTable dtRetour = null;
			System.Data.OleDb.OleDbConnection oCnx = new System.Data.OleDb.OleDbConnection(strCnx);
			System.Data.OleDb.OleDbCommand objCmdSelect = null;
			System.Data.OleDb.OleDbDataAdapter objAdapter = null;
			System.Data.DataSet oDs = new DataSet();

			// vérification globale des données entrantes
			if(strCheminFichier != string.Empty && strNomFeuilleExcel != string.Empty)
			{
				if(System.IO.File.Exists(strCheminFichier))
				{
					// ouvertur de la connexion
					oCnx.Open();
					// création de la commande
					objCmdSelect =new System.Data.OleDb.OleDbCommand("SELECT * FROM ["+ strNomFeuilleExcel +"$]", oCnx);
					objAdapter = new System.Data.OleDb.OleDbDataAdapter();
					// on informe de l'instruction SELECT
					objAdapter.SelectCommand = objCmdSelect;
					// on execute la requete en spécifiant le protocole et on remplit le DataSet
					objAdapter.Fill(oDs, "XLData");
					// Vérification du dataset
					if(oDs != null && oDs.Tables != null && oDs.Tables.Count > 0)
					{
						dtRetour = oDs.Tables[0];
					}
					else
					{
						dtRetour = null;
					}

					// Libération
					oCnx.Close();
					objCmdSelect.Dispose();
					objAdapter.Dispose();
				}
			}
			return dtRetour;
		}

Conclusion :


Logiquement il n'y a rien à importer au niveau des références car cela utilise le framework de base lors d'un développement WebForm

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.