SORU
22 Temmuz 2009, ÇARŞAMBA


OleDb kullanarak SAYFA DÜZENİ sayfa isimlerini Excel

OleDb tane kağıt ile bir excel çalışma kitabı okumak için kullanıyorum.

Sayfa adları okumak istiyorum, ama eğer bu gibi görünen bir dosya var Eğer tablo; şeklinde değilse, bu sırada onlara ihtiyacım var;

|_____|_____|____|____|____|____|____|____|____|
|_____|_____|____|____|____|____|____|____|____|
|_____|_____|____|____|____|____|____|____|____|
\__GERMANY__/\__UK__/\__IRELAND__/

Sonra sözlüğe ihtiyacım var

1="GERMANY", 
2="UK", 
3="IRELAND"

Bana bir isim listesi verir OleDbConnection.GetOleDbSchemaTable() ve kullanarak denedim, ama alfabetik olarak sıralar. Alfa-sıralama belirli bir isme karşılık gelir bilmiyorum demektir. Bu yüzden;

GERMANY, IRELAND, UK

UK IRELAND sırası değişti.

Neden ihtiyacım olsun sıralanır izin vermeliyim kullanıcı seçin bir dizi veri adı veya dizin; onlar sormak için "tüm verileri, ALMANYA ve İRLANDA' ya da 'veri FORMU 1 Sayfa 3'.

Herhangi bir fikir büyük mutluluk duyacağız.

eğer office birlikte çalışma sınıfları kullanabilirim, bu kolay olurdu. Ne yazık ki, OLEDB kullanmak için ihtiyacım vardı bu yüzden birlikte çalışma sınıfları, güvenilir bir şekilde windows hizmetleri ve ASP.NET siteleri gibi etkileşimli olmayan ortamlarda işe yaramaz, çünkü yapamam.

CEVAP
22 Temmuz 2009, ÇARŞAMBA


0 dan sayfaları aracılığıyla sadece döngü adları -1 sayacak mısın? bu şekilde doğru sırayla onları almak gerekir.

Edit

Birlikte çalışma sınıfları kullanarak ilgili endişeleri sayfa adlarını almak için bir yeri vardır bu yorumlarla fark ettim. Bu nedenle burada bir örnek OLEDB onları almak için kullanma

/// <summary>
/// This method retrieves the 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. Change the excel file to the file you
        // will search.
        String connString = "Provider=Microsoft.Jet.OLEDB.4.0;"   
          "Data Source="   excelFile   ";Extended Properties=Excel 8.0;";
        // Create connection object by using the preceding connection string.
        objConn = new OleDbConnection(connString);
        // Open connection with the database.
        objConn.Open();
        // Get the data table containg the schema guid.
        dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

        if(dt == null)
        {
           return null;
        }

        String[] excelSheets = new String[dt.Rows.Count];
        int i = 0;

        // Add the sheet name to the string array.
        foreach(DataRow row in dt.Rows)
        {
           excelSheets[i] = row["TABLE_NAME"].ToString();
           i  ;
        }

        // Loop through all of the sheets if you want too...
        for(int j=0; j < excelSheets.Length; j  )
        {
            // Query each excel sheet.
        }

        return excelSheets;
   }
   catch(Exception ex)
   {
       return null;
   }
   finally
   {
      // Clean up.
      if(objConn != null)
      {
          objConn.Close();
          objConn.Dispose();
      }
      if(dt != null)
      {
          dt.Dispose();
      }
   }
}

Bu CodeProject üzerinde Article elde edilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EEVblog

    EEVblog

    4 NİSAN 2009
  • laptopmag

    laptopmag

    25 Ocak 2008
  • Phandroid

    Phandroid

    26 Ocak 2009