如果您不知道工作表位於工作簿中的「哪裏」,則可以遍歷每個工作表並檢查工作表名稱,或者如您所說的「cellA1中的文本」。
檢查單元格A1中的文本...我不知道如何通過查看第一個單元格來知道該表單是否正確。如果所有工作表在第一個單元中都有值,會怎麼樣?那個細胞包含什麼?單元格是否包含說明「這是正確的表單」的文本?所以我假設這個工作簿只有一張帶有數據的工作表,而其他工作表是空的。
循環瀏覽工作簿中的工作表相對比較容易,但是如果您不知道工作表的名稱是什麼,則可能很難確定正確的工作表。根據我的假設(以上)只有一張紙和數據,然後您可以檢查每張紙來查看每張紙有多少行數據。然後,具有多於一行數據的那個是您正在查找的工作表。如果其他工作表也有數據,那麼這將不起作用,您將不得不以其他方式識別目標工作表。
如果您確實知道工作表的名稱,那麼您很好。在你的情況下,你說工作表是「Sheet3」,但可能不在工作簿中工作表的第三個索引中。在這種情況下,你可以通過名字,你問與引用表:
Worksheet target = workbook.Sheets[「Sheet3」];
如果target
返回null,則命名爲「工作表Sheet」的工作表不存在。如果target不爲空,那麼您已經找到該工作表,並且它可以被target
Worksheet變量引用。
從你所描述的,如果片總是被命名爲「工作表Sheet」,那麼簡單地使用:
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());
}
}
希望這有助於