1

我试着

var tempSheet = wrksheets[sheetName] as Worksheet;  

其中wrksheetssheetName 类型是“带空格的工作表名称”

如果 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;
4

1 回答 1

3

用引号将工作表名称括起来。

var tempSheet = wrksheets["\"" + sheetName + "\""] as Worksheet;
于 2012-12-17T18:43:07.817 回答