You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中获取Excel工作表名称的非法字符?含OpenXML异常问题

在C#中获取Excel工作表名称的非法字符

Excel并没有提供直接的API让你获取工作表名称的非法字符,但根据官方命名规则,以下字符是不允许出现在工作表名称中的::, /, \, ?, *, [, ]。

另外还有几个额外的命名限制需要注意:

  • 工作表名称长度不能超过31个字符
  • 不能以单引号(')开头或结尾
  • 不能是空字符串或仅包含空白字符
  • 不能使用Excel的保留名称(比如"History"这类系统预留名称)

你提到的OpenXML允许创建包含非法字符的工作表名称,是因为OpenXML仅负责生成底层XML结构,不会强制执行Excel客户端的命名规则,所以这类文件在Excel中打开时会报错。

在C#中,你可以手动定义这些非法字符,或者封装验证逻辑来避免生成无效的工作表名称:

获取非法字符数组的方法

public static char[] GetInvalidExcelSheetNameChars()
{
    // Excel官方规定的非法字符集合
    return new[] { ':', '/', '\\', '?', '*', '[', ']' };
}

验证工作表名称有效性的方法

public static bool IsValidExcelSheetName(string sheetName)
{
    if (string.IsNullOrWhiteSpace(sheetName))
        return false;
    
    // 校验长度限制
    if (sheetName.Length > 31)
        return false;
    
    // 校验单引号首尾限制
    if (sheetName.StartsWith("'") || sheetName.EndsWith("'"))
        return false;
    
    // 校验是否包含非法字符
    var invalidChars = GetInvalidExcelSheetNameChars();
    return sheetName.IndexOfAny(invalidChars) == -1;
}

使用这个验证方法,你可以在创建Sheet对象前先校验名称,避免生成Excel无法打开的文件。

内容的提问来源于stack exchange,提问作者user32882

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 06:05:27