"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo recuperar las hojas de Excel en su orden original con OLEDB?

¿Cómo recuperar las hojas de Excel en su orden original con OLEDB?

Publicado el 2025-02-26
Navegar:290

How to Retrieve Excel Sheet Names in Their Original Order Using OLEDB?

recuperando los nombres de las hojas de Excel en el orden de la hoja usando OLEDB

de recuperar los nombres de las láminas de un libro de trabajo de Excel se encuentra comúnmente en la programación. Sin embargo, obtener estos nombres en el orden en que se definen en la hoja de cálculo pueden ser desafiantes cuando se usa OLEDB.

Definición de problema

reorganizando los nombres de las hojas alfabéticamente, OLEDBConnection. Getoledbschematable () no puede proporcionar nombres de hojas en el orden deseado. Esto dificulta la capacidad del usuario para especificar la recuperación de datos en función del nombre o el índice de la hoja, lo que lleva a la confusión.

Uso de bucle anidado

Un enfoque implica iterar a través de las hojas secuencialmente de la hoja 0 al número de hojas menos 1. Esto garantiza la preservación del orden de la hoja.

implementación usando OLEDB

Si no es factible usar las clases de Office interop, una solución que usa OLEDB está disponible:

/// 
/// Retrieves excel sheet names from an excel workbook.
/// 
/// The excel file.
/// String[]
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();
      }
   }
}

Este código se conecta al archivo de Excel, recupera la tabla de datos que contiene nombres de hoja y llena una cadena [] con estos nombres en el orden que aparecen en la hoja de cálculo.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3