通过它的代号来获取工作表
每个Excel工作表都有一个SheetName(名称显示给用户)和一个Codename(内部不可变的名称,用户不可见),见下图。 我需要通过它的代号而不是它的SheetName来获得工作表。 原因是如果用户更改SheetName,我的实际代码将不再工作。
只要suer不会将SheetName“Sales”更改为其他值:
var myworksheet = Worksheet("Sales");
我需要假设函数WorksheetByCodeName
所以我可以写这个(如果用户已经将SheetName从“Sales”更改为其他内容,也可以这样做:
var myworksheet = WorksheetByCodeName("Sheet1");
此图片仅用于说明。 这个问题与VBA无关。
有关工作表代号的更多信息
你不能在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; }