получить номер листа в файле xls excel - PullRequest
0 голосов
/ 14 февраля 2012

как узнать, сколько листов в файле

  string connectionString = String.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=""Excel 8.0;HDR=no;IMEX=1;""", openFileDialog1.FileName);   

теперь я хочу знать, сколько листов в заданной стороне?

какой код я должен написать?

откуда мне знать?

спасибо

1 Ответ

2 голосов
/ 06 мая 2012

Хотя вопрос, на который указывает Харис Хасан, позволит вам извлечь названия листов, если вы просто хотите указать количество листов в рабочей книге, то сработает следующее:

string connectionString = String.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=""Excel 8.0;HDR=no;IMEX=1;""", openFileDialog1.FileName);
int numberOfSheets = 0;

using (OleDbConnection conn = new OleDbConnection(connectionString))
{
    conn.Open();

    DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

    if (dt != null)
    {
        foreach (DataRow row in dt.Rows)
        {
            if (row["TABLE_NAME"].ToString().EndsWith("$"))
            {
                numberOfSheets++;
            }
        }
    }
}

EDIT:

Или, для более короткой версии, используйте следующее (спасибо за jb за помощь в этом):

string connectionString = String.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=""Excel 8.0;HDR=no;IMEX=1;""", openFileDialog1.FileName);
int numberOfSheets = 0;

using (OleDbConnection conn = new OleDbConnection(connectionString))
{
    conn.Open();

    DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

    if (dt != null)
    {
        numberOfSheets = dt.AsEnumerable().Cast<DataRow>().Where(row => row["TABLE_NAME"].ToString().EndsWith("$")).Count();
    }
}
...