使用regex来解析Excel的范围定义[英] Using regex to parse Excel range definitions

问题描述

最终目标是拥有一个审核工具,该工具将通过 Open XML 读取 Excel 文件的定义名称部分,并解释范围名称的定义.有些范围包含单个单元格,有些是矩形范围,有些则相当复杂.这是具有多种定义的文件的已定义名称部分:

<x:definedNames xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><x:definedName name="bigRange">'Sht2 测试'!$C$3:$E$8</x:definedName><x:definedName name="cellabove">Sheet1!A1048576</x:definedName><x:definedName name="multirange">'Sht2 测试'!$B$16:$C$18,'Sht2 测试'!$E$14:$F$16,'Sht2 测试'!$H$12:$J$15</x:definedName><x:definedName 名称="TestRange">2*TestRange1</x:definedName><x:definedName 名称="TestRange1">Sheet1!$C$3</x:definedName><x:definedName name="ThreeD">Sheet1:Sheet3!$A$16</x:definedName></x:definedNames>


使用 Expresso,我已经能够构建以下模式:
(?<sheet>\''?.*\''?|.*)?\!\$?(?<col>[a-zA-Z]+)\$?(?<rownum>\d+)|\$?(?<col>[a-zA-Z]+)\$?(?<rownum>\d+) 


它将捕获工作表名称、列字母和行号,并适用于以下简单变化:

C66<br />
$AB$15<br />
''Sht2 Test''!$C$3<br />
Sheet2!$CC$44<br />

我无法弄清楚,如果有什么会很好,是一种适用于 Sheet1 的模式!$A$1:$C$4 给我 2 个单独的捕获,一个用于单元格 A1,一个用于单元格 C4,并且两者都具有相同的工作表名称

有没有一个不涉及庞大而混乱的模式的解决方案?如果是这样,这种模式可能是什么?

谢谢,
Duke

推荐答案

C

3:

E

本文地址:https://www.itbaoku.cn/post/1394978.html