一些有效的工作表名称如下所示
t'#3cfbsdjfdsjb''''''''^^^^^^&&'!$C$8:$N$23
1'!$E$13:$H$19
!'!$B$7:$E$16
@@@@@@@'!$B$7:$K$21
!$'!$B$12:$M$17
Run Code Online (Sandbox Code Playgroud)
我在用
string pattern =@"[^<]+?\!\$[A-Z]+\$[0-9]+"
Regex r = new Regex(Constants.CELL_REFERENCE_PATTERN);
Match m = r.Match(selectedVal);
if (m.Success) return true;
else return false;
Run Code Online (Sandbox Code Playgroud)
但它失败了
“t'#3cfbsdjfdsjb''''''''^^^^^^&&'!$C$8:$N$23,p,mv”或“sheet1!$A1”。
提前致谢
忽略 C# 因素,这些是我发现有效的正则表达式。
带有可选工作表的单元格引用 (<sheet>!<cell>)
"(('[^/\\?*\[\]]{1,31}'|[A-Za-z0-9_]{1,31})!)?((\$?[A-Za-z]{1,3})(\$?[0-9]{1,6}))"
Run Code Online (Sandbox Code Playgroud)
笔记:
ZZZ999999
通过正则表达式有效,但它不是 Excel 内部的有效位置。{1,3}
为{1,2}
和。这是因为单元格范围从(2007 年之前)变为(2007 年以上)。但当然,没有验证,从技术上讲它可能是和。{1,6}
{1,5}
IV65536
XFD1048576
[A-Za-z]+
[0-9]+