我试着
var tempSheet = wrksheets[sheetName] as Worksheet;
其中wrksheets
sheetName 类型是“带空格的工作表名称”
如果 sheetName 没有空间,它工作正常,但如果它有空间,我得到一个异常说无效索引。我只知道工作表的名称,不知道它的索引。我唯一能想到的就是遍历工作表并将每张工作表的名称与 sheetName 进行比较。效率不高,但有更好的方法吗?谢谢
编辑说工作表名称是“带空格的工作表名称”当我在工作表中引用一个单元格时说 A1,它将是“带空格的工作表名称”!当我在 wrksheets [sheetName] 中使用“带空格的工作表名称”时,A1,我得到一个无效的索引异常,我发现问题是我应该使用“带空格的工作表名称”作为 sheetName 而不是带有单引号的原始工作表名。
因此,我编写了一个函数来删除工作表名称中的无效/转义字符,然后再从 wrksheets 获取工作表,然后它就可以正常工作了。
private string RemoveEscapeCharsFromSheetName(string sheetName)
{
//TODO: should remove all chars that are not allowed in Excel Sheet Name
sheetName = sheetName.Trim(new char[] { ' ', '\'' });
return sheetName;
}
sheet = RemoveEscapeCharsFromSheetName(sheet);
var tempSheet = wrksheets[sheet] as Worksheet;