|
![]() |
#1 |
Участник
|
Цитата:
Сообщение от Predatore
![]() Цитата:
Сообщение от mandrake
![]() Всем, привет!
Собственно вопрос в теме: как прочитать длинный текст из Excel? В ячейке excel - текст длиной > 1024 символов. Как его правильно оттуда достать\прочитать из MAV? С самим excel я работаю через Automation Следующий код FORMAT(xlWorkSheet.Range(X+FORMAT(Y)).Text) вываливается с ошибкой: --------------------------- Microsoft Dynamics NAV Classic --------------------------- Длина текстовой строки превосходит размер буфера строки. --------------------------- OK --------------------------- Спасибо! Так написано в документации, т.е. по идее задача не решаема в том виде, в котором поставлена. Но. Во-первых: есть обходной путь позволяющий Наву работать с текстовыми переменными длиннее 1024 символов, копать здесь: http://forum.mazzy.ru/index.php?showtopic=1477 А во-вторых: и именно этот вариант выбрал бы я, можно предварительно разбить переменную на части длинной не более 1024 символов и читать её по частям. Разбивать можно прямо из Нава. Весь код приводить не буду, но мейнстрим подкину. В примере рассматриваю случай строки больше 1024 символов, но меньше 2048. Если строка ещё длиннее, то дальше сами доработаете алгоритм. С помощью Automation создаёте в экселе формулу, которая вычисляет длину строки =ДЛСТР(X+FORMAT(Y)) и записываете значение в переменную, назовём её strlen. Далее, с помощью Automation создаёте в экселе, где-нибудь в свободных ячейках формулы =ЗАМЕНИТЬ (X+FORMAT(Y);1025;strlen;'') //это скопирует в ячейку первые 1024 символа =ЗАМЕНИТЬ (X+FORMAT(Y);1;1024;'') //это скопирует в ячейку оставшиеся символы Ну вот собственно и всё, дальше читаете данные без проблем кусками по 1024 символа. P.S. Есть ещё третий путь. Можно написать свой Automation, который сам будет делить строку на блоки по 1024 символа и возвращать данные через переменные переданные в него по ссылке. |
|