Если вы не знаете «где» рабочий лист находится в рабочей книге, вы можете прокручивать каждый лист и проверять имя листа, или, как вы говорите «текст в cellA1».
Проверка текста в ячейке A1 ... Я не уверен, как вы узнаете, был ли лист подходящим, посмотрев на первую ячейку. Что делать, если все листы имеют значение в первой ячейке? И что будет содержать эта ячейка? Будет ли ячейка содержать текст, который говорит «это правильный лист»? Поэтому я предполагаю, что в этой книге есть только один лист с данными, а остальные листы пусты.
Проникновение через листы в книге относительно просто, однако, если вы не знаете, что такое имя листа, тогда может быть трудно определить правильный лист. Используя мое предположение (выше) только одного листа с данными, вы можете проверить каждый лист, чтобы узнать, сколько строк данных на каждом листе. Затем тот, который содержит более 1 строки данных, является листом, который вы ищете. Если у других листов также есть данные, это не сработает, и вам придется идентифицировать целевой лист каким-либо другим способом.
Если вы ЗНАЕТЕ имя рабочего листа, то вам хорошо идти. В вашем случае вы заявили, что рабочий лист был «Sheet3», но не может быть в третьем индексе рабочих листов в книге. В этом случае вы можете ссылаться на листе по имени, как вы просили с:
Worksheet target = workbook.Sheets[“Sheet3”];
Если target
возвращает нуль, то таблица с именем «Sheet3» не существует. Если цель не равна нулю, то вы нашли рабочий лист и на него может ссылаться переменная рабочего листа target
.
Из того, что вы описали, если лист всегда называется «Лист3», а затем просто использовать:
if (SheetExist(workbook, "Sheet3"))
{
Worksheet myWS = workbook.Sheets["Sheet3"];
if (myWS.Cells[1,1].Value != null)
Console.WriteLine("\nCell[1,1] of sheet3: " + myWS.Cells[1, 1].Value.ToString() + "\n");
else
Console.WriteLine("\nCell[1,1] of sheet3 is Null/has no value");
}
else
{
//Console.WriteLine("Worksheet NOT found!");
// sheet named "Sheet3" does not exist in the workbook
}
Ниже приведен метод, который вы можете использовать, чтобы увидеть, если «лист» с прилагаемым названием «SheetName «Существуют в данной« книге ». Если вам нужен индекс рабочего листа, вы можете изменить его, чтобы вернуть индекс или -1, если он не существует.
private static bool SheetExist(Excel.Workbook workbook, string sheetName)
{
Worksheet target = workbook.Sheets[sheetName];
if (target != null)
{
//Console.WriteLine("Worksheet found!");
return true;
}
else
{
//Console.WriteLine("Worksheet NOT found!");
return false;
}
Метод, который проходит через все листы и проверяет количество строк с данными, используя функцию «UsedRange». Это также определяет индекс рабочего листа в книге.
private static void LoopThruAllSheets(Workbook workbook)
{
Sheets allWorkSheets = workbook.Worksheets;
foreach (Worksheet curWS in allWorkSheets)
{
Console.WriteLine("Worksheet : at index " + curWS.Index + " name: " + curWS.Name.ToString() + " UsedRange.Rows.Count: " + curWS.UsedRange.Rows.Count.ToString());
}
}
Надеется, что это помогает