C# 当sheetname以编程方式包含空格时,如何从工作表中获取Excel工作表
我试着C# 当sheetname以编程方式包含空格时,如何从工作表中获取Excel工作表,c#,excel,worksheet,C#,Excel,Worksheet,我试着 var tempSheet = wrksheets[sheetName] as Worksheet; 其中,wrksheets为图纸类型 sheetName是“带空格的图纸名称” 若sheetName并没有空间,那个么它可以正常工作,但若它有空间,那个么我会得到一个异常,表示索引无效。我只知道工作表的名称,不知道它的索引。我能想到的唯一一件事就是循环浏览图纸,并将每张图纸的名称与图纸名称进行比较。效率不高,但有更好的方法吗?谢谢 编辑 假设图纸名称为“带空格的图纸名称” 当我引用工
var tempSheet = wrksheets[sheetName] as Worksheet;
其中,wrksheets
为图纸类型
sheetName是“带空格的图纸名称”
若sheetName并没有空间,那个么它可以正常工作,但若它有空间,那个么我会得到一个异常,表示索引无效。我只知道工作表的名称,不知道它的索引。我能想到的唯一一件事就是循环浏览图纸,并将每张图纸的名称与图纸名称进行比较。效率不高,但有更好的方法吗?谢谢
编辑
假设图纸名称为“带空格的图纸名称”
当我引用工作表中的单元格(如A1)时,它将是“带空格的工作表名称”!A1
当我在wrksheets[sheetName]中使用“'sheet name with spaces'”时,我得到一个无效的索引异常
我发现问题是我应该使用“带空格的工作表名称”作为工作表名称,而不是使用带单引号的原始工作表名称。所以,在从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;
你能提供一个真实的例子吗?因为我对你解释的场景从来没有遇到过问题,除非我误解了你的场景。撇开主要问题不谈,我看不出在你的工作表中循环有什么问题。即使你有几百个(我很怀疑是几十个),影响也可以忽略不计。你有比这一行更多的代码吗。。?这有助于没有人考虑向你提供足够的建议和/或帮助