「どこで」ワークブックがワークブックにあるかわからない場合は、各シートをループしてシート名を確認するか、「cellA1のテキスト」と言うことができます。
セルA1のテキストを確認しています...最初のセルを見てシートが適切かどうかわかりません。すべてのシートが最初のセルに値を持つ場合はどうなりますか?その細胞には何が含まれていますか?セルに「これは正しいシートです」というテキストが含まれていますか?だから私は、このワークブックにはデータ付きのシートが1枚しかなく、他のシートは空であると仮定しています。
ブックのシートをループするのは比較的簡単ですが、シートの名前がわからない場合は、適切なシートを特定するのが難しい場合があります。 1つのシートにデータがあるという前提を使って、各シートをチェックして、各シートのデータ行の数を確認することができます。次に、1行以上のデータがあるものが、探しているシートです。他のシートにもデータがある場合、これは機能せず、ターゲットシートを別の方法で識別する必要があります。
ワークシートの名前を知っていれば、いいですね。あなたのケースでは、ワークシートは "Sheet3"でしたが、ブックのワークシートの3番目のインデックスにはない可能性があります。あなたが尋ねたように、この場合、名前でシートを参照することができます。
Worksheet target = workbook.Sheets[“Sheet3”];
target
場合はnullを返し、その後、「シート3」という名前のワークシートが存在しません。 targetがnullでなければ、ワークシートを見つけて、ワークシート変数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
}
は、あなたが指定された名前「シート名を持つ「ワークシート」かどうかを確認するために使用できる方法であり、ワークシートのインデックスが必要な場合は、これを変更してインデックスを返すか、存在しない場合は-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());
}
}
が、これは
を役に立てば幸い