Столкнулся тоже с этой проблемой.
Необходимо постоянно в TPS-ном файле(длина записи 420 байт) постоянно обновлять около ста пятидесяти тысяч строк при импорте из Excel (из сформированного обобщенного прайс-листа).
Попытался использовать предлагаемые решения. Все равно очень долго.
В начале темы прозвучало, на мой взгляд, решение выхода из этой ситуации - работа через ClipBoard.
Вопрос, опять на мой взгляд, не из простых, а для кого-то уже пройденный - а как можно работать напрямую с оперативкой, куда помещен ClipBoard всей таблицы. Каков формат этого куска памяти?
Заранее благодарен за совет.
Ускорение работы с Excel через OLE?
Clarion, Clarion 7
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
lexa
- Игорь Столяров
- Ветеран движения
- Сообщения: 8075
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
Мда ! 150 000 * 420 дает на вскидку около 60 MByte.
Даже если сделать аресацию такой строки - все равно к ней доступ будет последовательным и потребуется загрузка в ClipBoard такого массива данных. Может быть проще разместить данные из XLS таблицы последовательным чтением в виде индексированной QUEUE ?
И далее уже с ней работать ?
А если таблица XLS имеет линейную структуру - то можно вместо "медленного" OLE попробовать ODBC драйвер ...
Даже если сделать аресацию такой строки - все равно к ней доступ будет последовательным и потребуется загрузка в ClipBoard такого массива данных. Может быть проще разместить данные из XLS таблицы последовательным чтением в виде индексированной QUEUE ?
И далее уже с ней работать ?
А если таблица XLS имеет линейную структуру - то можно вместо "медленного" OLE попробовать ODBC драйвер ...
Игорь Столяров
Буфер обмена состоит из строк, разделённых символами переноса строки <13,10>lexa писал(а):Столкнулся тоже с этой проблемой.
Необходимо постоянно в TPS-ном файле(длина записи 420 байт) постоянно обновлять около ста пятидесяти тысяч строк при импорте из Excel (из сформированного обобщенного прайс-листа).
Попытался использовать предлагаемые решения. Все равно очень долго.
В начале темы прозвучало, на мой взгляд, решение выхода из этой ситуации - работа через ClipBoard.
Вопрос, опять на мой взгляд, не из простых, а для кого-то уже пройденный - а как можно работать напрямую с оперативкой, куда помещен ClipBoard всей таблицы. Каков формат этого куска памяти?
Заранее благодарен за совет.
Строка состоит из полей в текстовом виде, разделенных знаком табуляции <9>
Yufil
-
- Ветеран
- Сообщения: 311
- Зарегистрирован: 08 Июль 2005, 22:04
lsgsoftware
Спасибо. Это то, что нужно.Yufil писал(а):Буфер обмена состоит из строк, разделённых символами переноса строки <13>
Строка состоит из полей в текстовом виде, разделенных знаком табуляции <9>
Да!, просто для решения этой проблемы мне понадобились функция CLIPBOARD(1), переменная String максимальной длины и функции обработки строки по поиску в ней вышеупомянутых кодов разделителей.
Экспериментировал на не очень быстрой машинке с таблицей в 15тыс. строк. Считывание по каждой ячейке и последующей записи на диск занимало примерно 14 мин. Через закачку в String содержимого CLIPBOARD-а, последующей обработки и записи это заняло всего 4-5сек.
Более объемные таблицы через туже процедуру буду загружать частями, думаю, выигрыш будет тот же.
lexa
lexa
Вернуться в «CLARION for Windows»
Перейти
- CW
- ↳ CLARION for Windows
- ↳ CLARION for Internet
- ↳ Clarion.NET
- Эксклюзив
- ↳ Приват
- CLARION и...
- ↳ Reports
- ↳ Железо
- ↳ Готовые программы, шаблоны, библиотеки...
- ↳ cJSON
- ↳ LibCurl
- ↳ MAV
- ↳ SQL, Oracle, ...
- ↳ Multi-программирование(Pascal/Delphi, и т.д.)
- ↳ WinDev
- DOS
- ↳ CLARION for DOS
- Разное
- ↳ Новости
- ↳ English
- ↳ Ресурсы
- ↳ Работа
- ↳ Обо всем ...
- ↳ Обсуждение этого Форума (типа, Гостевая книга)