c# - 当工作表名称以编程方式包含空格时如何从工作表中获取 Excel 工作表

标签 c# excel worksheet

我试着

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/

相关文章:

c# - 如何执行给定次数的while循环?

excel - ActiveSheet、ActiveWorkbook.ActiveSheet 和 Application.ActiveSheet 的行为有何不同?

vba - 自动打开一个excel文件到所有工作表中的单元格A1(使用VBA)

excel - 双击Excel中的一个单元格,在用户窗体上打开该行的源文件

java - 在 POI 中复制 Excel 工作表

c# - 如何在隐藏字段中存储和接收字节数组?

c# - 为 C++ DLL 实现回调 C# 函数

c# - 从不同版本的HIVE获得的TFetchResultsResp结果之间的冲突

隐藏行后,VBA 代码停止执行,没有错误

excel - 如何在 Excel 中自动填充反向配对组合