|
Распарзить выражение (формулу Excel)
|
|||
---|---|---|---|
#18+
Господа, как подойти к решению такой задачи оптимальным способом? Необходимо взять строковое написание произвольной формулы Excel "=C3/G$6", "=SQRT(SUM(A1:B3)/AVG([$D33:F$1])*FF88)" и т.п. найти все координаты (A1,B3, FF88), изменить их по заданным правилам и собрать формулу в исходном виде с новыми координатами. Regex может оказать недостаточно, чтобы решить эту задачу (либо может кто-то подскажет, как круто подойти к данной проблеме на Regex). А к Excel Automation прибегать не хочется. Нежно что-то вроде ExpressionTrees, но не полномасштабный компилятор. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 11:13 |
|
Распарзить выражение (формулу Excel)
|
|||
---|---|---|---|
#18+
А в стиле RC не проще работать будет, или по ТЗ это невозможно? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 11:24 |
|
Распарзить выражение (формулу Excel)
|
|||
---|---|---|---|
#18+
С другой стороны, почему не поможет Regex? несколько букв+несколько цифр с необязательным префиксом $ Диапазоны через двоеточие, без двоеточия - отдельные ячейки Что я упускаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 11:27 |
|
Распарзить выражение (формулу Excel)
|
|||
---|---|---|---|
#18+
Shocker.ProА в стиле RC не проще работать будет, или по ТЗ это невозможно? В файле координаты лежать в классическом стиле даже если визуальны вы видите RC. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 11:36 |
|
Распарзить выражение (формулу Excel)
|
|||
---|---|---|---|
#18+
Shocker.Pro, вот здесь заменять не надо "Это строка A1". Поэтому regex может оказаться сложным ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 11:38 |
|
Распарзить выражение (формулу Excel)
|
|||
---|---|---|---|
#18+
Нужен Tokenizer ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 11:38 |
|
Распарзить выражение (формулу Excel)
|
|||
---|---|---|---|
#18+
a_voroninвот здесь заменять не надо "Это строка A1". Поэтому regex может оказаться сложнымОк, исключить строковые литералы внутри формул (можно сделать до поиска ячеек). Что еще? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 11:50 |
|
Распарзить выражение (формулу Excel)
|
|||
---|---|---|---|
#18+
С другой стороны, формулы экселя имеют довольно-таки стандартный синтаксис, поэтому можно попробовать использовать каую-либо библиотеку разбора формул, а потом просмотреть список аргументов на предмет соответствия паттерну адреса диапазона или адреса ячейки. Но я бы попробовал обойтись все-таки обработкой строк, возможно, я просто не вижу еще каких-то противопоказаний, которые видите вы. ЗЫ: вспомнил еще один вариант задания диапазона А:А, A:F, 1:1, нужно будет тоже учесть ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 12:22 |
|
Распарзить выражение (формулу Excel)
|
|||
---|---|---|---|
#18+
Shocker.Pro, Вопрос, что именно рекомендуется взять. Ибо регулярки писать у меня проблем нет. Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 13:34 |
|
Распарзить выражение (формулу Excel)
|
|||
---|---|---|---|
#18+
a_voroninкак круто подойти к данной проблеме на Regexa_voroninИбо регулярки писать у меня проблем нет.не, лично я не подскажу с библиотекой, не использовал такие, я думал, проблема с Regex, да и не увидел пока проблемы сделать это на Regex ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 13:53 |
|
Распарзить выражение (формулу Excel)
|
|||
---|---|---|---|
#18+
ЗЫ:a_voronin Код: c# 1. 2.
Все же регулярку куда как проще писать и анализировать через @"" ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 13:54 |
|
Распарзить выражение (формулу Excel)
|
|||
---|---|---|---|
#18+
a_voroninНужен Tokenizer Браво. Вы в гугл заглядывали? Если что - по запросу в выдаче первая ссылка ведет на SoF , на котором вторая ссылка вот сюда . В тексте внизу - ссылка на архив с проектом парсера. Парсер сделан как раз на токенайзере. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 16:45 |
|
Распарзить выражение (формулу Excel)
|
|||
---|---|---|---|
#18+
Сон Веры Павловныa_voroninНужен Tokenizer Браво. Вы в гугл заглядывали? Если что - по запросу в выдаче первая ссылка ведет на SoF , на котором вторая ссылка вот сюда . В тексте внизу - ссылка на архив с проектом парсера. Парсер сделан как раз на токенайзере. Заглядывал, только выбрал не первую ссылку, а четвертую https://github.com/spreadsheetlab/XLParser и уже допили этот проект под свои нужды. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 17:57 |
|
Распарзить выражение (формулу Excel)
|
|||
---|---|---|---|
#18+
a_voroninЗаглядывал, только выбрал не первую ссылку, а четвертую https://github.com/spreadsheetlab/XLParser и уже допили этот проект под свои нужды. Да, эта библиотека получше будет. Да и поновее. А регэкспами такие задачи в общем случае не являются - вложенные конструкции произвольной глубины (и не дай б-г контекстно-зависимые) автоматными языками не являются (а RE - это конечный автомат). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2018, 06:20 |
|
|
start [/forum/topic.php?fid=20&fpage=26&tid=1399196]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 144ms |
0 / 0 |