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