2

すべての Excel ワークシートには、SheetName (ユーザーに表示される名前) と Codename (ユーザーには表示されない内部の不変名) があります。下の図を参照してください。SheetName ではなくコード名でワークシートを取得する必要があります。その理由は、ユーザーが SheetName を変更すると、実際のコードが機能しなくなるためです。

これは、suer が SheetName "Sales" を別のものに変更しない限り機能します。

var myworksheet = Worksheet("Sales");

これを書くことができるように、仮説関数が必要ですWorksheetByCodeName(これは、ユーザーが SheetName を "Sales" から別のものに変更した場合にも機能します:

var myworksheet = WorksheetByCodeName("Sheet1");

この画像は説明用です。質問はVBAとは関係ありません。

ここに画像の説明を入力

ワークシートのコードネームに関する詳細情報

4

1 に答える 1

2

ClosedXML ではそれができません。ただし、OpenXML を使用できます (ClosedXML の要件として既に持っています)。

static string GetWorksheetNameForCodeName(string filename, string codename)
{
    DocumentFormat.OpenXml.Packaging.WorksheetPart wsp = SpreadsheetDocument
        .Open(filename, false).WorkbookPart.WorksheetParts
        .SingleOrDefault(ws => ws.Worksheet.SheetProperties.CodeName == codename);

    return wsp == null ? string.Empty : wsp.Worksheet.SheetProperties.LocalName;
}
于 2014-11-27T14:42:08.507 に答える