Récupération des noms de feuilles Excel dans l'ordre des feuilles à l'aide d'OLEDB
La tâche de récupération des noms de feuilles à partir d'un classeur Excel est couramment rencontrée en programmation. Cependant, obtenir ces noms dans l'ordre dans lequel ils sont définis dans la feuille de calcul peut être difficile lors de l'utilisation d'OleDb.
Définition du problème
En réorganisant les noms des feuilles par ordre alphabétique, OleDbConnection. GetOleDbSchemaTable() ne parvient pas à fournir les noms de feuilles dans l'ordre souhaité. Cela entrave la capacité de l'utilisateur à spécifier la récupération de données en fonction du nom ou de l'index de la feuille, ce qui entraîne une confusion.
Solution utilisant la boucle imbriquée
Une approche consiste à parcourir les feuilles de manière séquentielle. de la feuille 0 au nombre de feuilles moins 1. Cela garantit la préservation de la feuille commande.
Implémentation utilisant OLEDB
Si l'utilisation des classes Office Interop n'est pas réalisable, une solution utilisant OLEDB est disponible :
/// <summary> /// Retrieves excel sheet names from an excel workbook. /// </summary> /// <param name="excelFile">The excel file.</param> /// <returns>String[]</returns> private String[] GetExcelSheetNames(string excelFile) { OleDbConnection objConn = null; System.Data.DataTable dt = null; try { // Connection String String connString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + excelFile + ";Extended Properties=Excel 8.0;"; // Create connection and open connection to database objConn = new OleDbConnection(connString); objConn.Open(); // Get data table containing schema guid dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); if(dt == null) return null; // Initialize String[] to store sheet names. String[] excelSheets = new String[dt.Rows.Count]; int i = 0; // Add sheet name to the string array. foreach(DataRow row in dt.Rows) { excelSheets[i] = row["TABLE_NAME"].ToString(); i++; } return excelSheets; } catch(Exception ex) { return null; } finally { // Clean up connection and data table if(objConn != null) { objConn.Close(); objConn.Dispose(); } if(dt != null) { dt.Dispose(); } } }
Ceci Le code se connecte au fichier Excel, récupère le tableau de données contenant les noms de feuilles et remplit une chaîne [] avec ces noms dans l'ordre dans lequel ils apparaissent dans le fichier Excel. feuille de calcul.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!