У меня есть рабочая книга, которую я должен очистить от всех ссылок на другие рабочие книги. В настоящее время я пытаюсь разобрать формулы ячеек, чтобы проверить, ссылаются ли они на какой-либо файл Excel.
Для этого я использую эту строку
cell.getCellFormula().matches(".*\\[.*\\.xls[xm]?\\].*")
проблема в том, что ячейка выглядит следующим образом в формате XML:
<c r="K64" s="2128">
<f>[5]Segments!$AS$7/Annual!AF38</f>
<v>0.0</v>
</c>
Как видите, в действительности формула вообще не содержит .xls
, '.xlsx' или .xlsm
. Насколько я знаю, [5]
указывает общую строку, которая содержит фактический путь и, следовательно, фактическое значение для формулы.
Теперь можно сказать и изменить регулярное выражение на .*\\[\d+\\].*
, но я думаю, что это может быть довольно подвержено ошибкам. Также я думаю, что не все внешние ссылки будут выглядеть буквально так.
Итак, мой вопрос:
Как определить формулы, которые ссылаются на внешнюю рабочую книгу?
Если у вас есть какие-либо вопросы, не стесняйтесь спрашивать.
EDIT:
Я подготовил образец файла Excel, в котором показана проблема. Он доступен для скачивания на workupload.com