Матричные функции для работы с Excel из VIPa
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 645
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"
Матричные функции для работы с Excel из VIPa
Добрый день! Вопрос.
С Exсel из Vipa работаем напрямую (запись в ячейки). Но для больших объемов получается очень долго записывать. Как то здесь в форуме мне говорили, что есть более быстрые функции..по-моему матричные. Кто-нибудь может подсказать, где можно почитать о них..или небольшой примерчик, если их немного. Мне просто надо вывалить данные SQL запроса в плоскую таблицу (лист) Excel..все оформления я сделаю Бейсиком потом. Если есть дока, то буду признателен, если кинете на почту. А может просто надо использовать пару функций?
С уважением, Игорь.
С Exсel из Vipa работаем напрямую (запись в ячейки). Но для больших объемов получается очень долго записывать. Как то здесь в форуме мне говорили, что есть более быстрые функции..по-моему матричные. Кто-нибудь может подсказать, где можно почитать о них..или небольшой примерчик, если их немного. Мне просто надо вывалить данные SQL запроса в плоскую таблицу (лист) Excel..все оформления я сделаю Бейсиком потом. Если есть дока, то буду признателен, если кинете на почту. А может просто надо использовать пару функций?
С уважением, Игорь.
Некоммерческое общение в форуме
-
- На пенсии
- Сообщения: 797
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г. Тюмень
- Контактная информация:
Re: Матричные функции для работы с Excel из VIPa
xlCreateMatrix
Function XLCREATEMATRIX(Rows, Cols : longint) : boolean;
Создает вариантный массив размерности [1 : Rows, 1 : Cols].
xlWriteToMatrix
Function xlWriteToMatrix (Row, Col : longint; Value : variant) : boolean;
Записать число в массив
xlClearMatrix
Function xlClearMatrix : boolean;
Очистить существующий массив.
xlWriteMatrixToExcel
Function xlWriteMatrixToExcel (RowU : longint = 0; ColL : longint = 0) : boolean;
Записать массив в книгу Excel с позиции (RowU, ColL)
xlFreeMatrix
Function xlFreeMatrix : boolean;
Освободить вариантный массив.
Function XLCREATEMATRIX(Rows, Cols : longint) : boolean;
Создает вариантный массив размерности [1 : Rows, 1 : Cols].
xlWriteToMatrix
Function xlWriteToMatrix (Row, Col : longint; Value : variant) : boolean;
Записать число в массив
xlClearMatrix
Function xlClearMatrix : boolean;
Очистить существующий массив.
xlWriteMatrixToExcel
Function xlWriteMatrixToExcel (RowU : longint = 0; ColL : longint = 0) : boolean;
Записать массив в книгу Excel с позиции (RowU, ColL)
xlFreeMatrix
Function xlFreeMatrix : boolean;
Освободить вариантный массив.
Жду выхода Вселенная 2.12!
-
- Местный житель
- Сообщения: 645
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"
Re: Матричные функции для работы с Excel из VIPa
Большое спасибо! Так посмотрел, вроде больше ничего и не надо..все функции нужные есть.
Если я правильно понял, т.к. ссылки на массив функция xlCreateMatrix (результат я так понял - успешное или не успешное окончание работы функции) не выдают, то в памяти может быть только один массив одновременно. Мы его формируем, переписываем в Excel и далее чистим для новой выгрузки или освобождаем память.
Будем пробывать ускорить Спасибо еще раз.
С уважением, Игорь
Если я правильно понял, т.к. ссылки на массив функция xlCreateMatrix (результат я так понял - успешное или не успешное окончание работы функции) не выдают, то в памяти может быть только один массив одновременно. Мы его формируем, переписываем в Excel и далее чистим для новой выгрузки или освобождаем память.
Будем пробывать ускорить Спасибо еще раз.
С уважением, Игорь
Некоммерческое общение в форуме
Re: Матричные функции для работы с Excel из VIPa
Пробую матричные функции.
Компилятор ругается на xlWriteToMatrix - кричит, нет такой функции, поля или метода...
На остальные вышеописанные функции не жалуется, все нормально компилит. Версия 7.11, потеряли функцию? ???
Компилятор ругается на xlWriteToMatrix - кричит, нет такой функции, поля или метода...
На остальные вышеописанные функции не жалуется, все нормально компилит. Версия 7.11, потеряли функцию? ???
Галактика 8.10, Oracle 10g / 10.2.0.4
-
- Местный житель
- Сообщения: 645
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"
Re: Матричные функции для работы с Excel из VIPa
Да вроде все работает. НАверное не подцеплен ресурс. Вообще, чтобы проверить есть ли такая функция в версии или нет и в каком ресурсе можно в EXE каталоге искать по контексту (идентификатор функции). Если найдет - значит есть и укажет какой ресурс должен быть подцеплен. Если нет - значит нет такой.
Некоммерческое общение в форуме
Re: Матричные функции для работы с Excel из VIPa
попробуй
Function XLSTWRITETOMATRIX(longint, longint, string) : boolean;
Function XLDOWRITETOMATRIX(longint, longint, double) : boolean;
для строковых и чисел с плавоющей точкой соотв-но.
Function XLSTWRITETOMATRIX(longint, longint, string) : boolean;
Function XLDOWRITETOMATRIX(longint, longint, double) : boolean;
для строковых и чисел с плавоющей точкой соотв-но.
Re: Матричные функции для работы с Excel из VIPa
//попробуй
//Function XLSTWRITETOMATRIX(longint, longint, string) : boolean;
//Function XLDOWRITETOMATRIX(longint, longint, double) : boolean;
Да, уже нашел, эти работают. Видимо, дока устарела.
//Function XLSTWRITETOMATRIX(longint, longint, string) : boolean;
//Function XLDOWRITETOMATRIX(longint, longint, double) : boolean;
Да, уже нашел, эти работают. Видимо, дока устарела.
Галактика 8.10, Oracle 10g / 10.2.0.4
Столкнулся с ограничением функции xlCreateMatrix на количество строк. В доке опять таки про это нет, кто-нибудь может подтвердить и сообщить точное значение потолка?
У меня около 50000 записей. Эксперементальным путем выяснил, что затыкается на 32767 строке.
Пока не разобрался - то ли xlCreateMatrix не может создать такой массив, то ли xlWriteMatrixToExcel не может их в Excel запихать...
У меня около 50000 записей. Эксперементальным путем выяснил, что затыкается на 32767 строке.
Пока не разобрался - то ли xlCreateMatrix не может создать такой массив, то ли xlWriteMatrixToExcel не может их в Excel запихать...
-
- Местный житель
- Сообщения: 783
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва
- Контактная информация:
Тоже сталкивался с тем, что выводится какая-то ерунда, если матрица размером достаточно большая. Экспериментально дошел до того, что 5000 записей выводятся без проблем. Может зависить от конкретной конфигурации компьютера? В общем, переделал отчет - теперь идет создание и вывод не одной матрицы, а нескольких матриц размером не более по-моему 5000 шт. записей. Естессно, матрицы создаются и после вывода убиваются Поэтому их и несколько.Serges писал(а):Столкнулся с ограничением функции xlCreateMatrix на количество строк. В доке опять таки про это нет, кто-нибудь может подтвердить и сообщить точное значение потолка?
У меня около 50000 записей. Эксперементальным путем выяснил, что затыкается на 32767 строке.
Пока не разобрался - то ли xlCreateMatrix не может создать такой массив, то ли xlWriteMatrixToExcel не может их в Excel запихать...