我试着
var tempSheet = wrksheets[sheetName] as Worksheet;
在哪里
wrksheets
是类型表sheetName 是“带空格的工作表名称”
如果 sheetName 没有空间,它工作正常,但如果它有空间,我得到一个异常说无效索引。我只知道工作表的名称,不知道它的索引。我唯一能想到的就是遍历工作表并将每张工作表的名称与 sheetName 进行比较。效率不高,但有更好的方法吗?谢谢
编辑
说工作表名称是“带空格的工作表名称”
当我在工作表中引用一个单元格时说 A1,它将是“带空格的工作表名称”!A1
当我在 wrksheets [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;
最佳答案
用引号将工作表名称括起来。
var tempSheet = wrksheets["\"" + sheetName + "\""] as Worksheet;
关于c# - 当工作表名称以编程方式包含空格时如何从工作表中获取 Excel 工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13919549/