Матричные функции для работы с Excel из VIPa
Модераторы: m0p3e, edward_K, Модераторы
- 
				ecasoft
 - Местный житель
 - Сообщения: 645
 - Зарегистрирован: 29 мар 2005, 17:49
 - Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"
 
Матричные функции для работы с Excel из VIPa
Добрый день! Вопрос.
С Exсel из Vipa работаем напрямую (запись в ячейки). Но для больших объемов получается очень долго записывать. Как то здесь в форуме мне говорили, что есть более быстрые функции..по-моему матричные. Кто-нибудь может подсказать, где можно почитать о них..или небольшой примерчик, если их немного. Мне просто надо вывалить данные SQL запроса в плоскую таблицу (лист) Excel..все оформления я сделаю Бейсиком потом. Если есть дока, то буду признателен, если кинете на почту. А может просто надо использовать пару функций?
С уважением, Игорь.
			
			
									
						
							С Exсel из Vipa работаем напрямую (запись в ячейки). Но для больших объемов получается очень долго записывать. Как то здесь в форуме мне говорили, что есть более быстрые функции..по-моему матричные. Кто-нибудь может подсказать, где можно почитать о них..или небольшой примерчик, если их немного. Мне просто надо вывалить данные SQL запроса в плоскую таблицу (лист) Excel..все оформления я сделаю Бейсиком потом. Если есть дока, то буду признателен, если кинете на почту. А может просто надо использовать пару функций?
С уважением, Игорь.
Некоммерческое общение в форуме
			
						- 
				Max_Fin
 - На пенсии
 - Сообщения: 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!
			
						- 
				ecasoft
 - Местный житель
 - Сообщения: 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
			
						- 
				ecasoft
 - Местный житель
 - Сообщения: 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 запихать...
- 
				Deinis
 - Местный житель
 - Сообщения: 783
 - Зарегистрирован: 29 мар 2005, 17:49
 - Откуда: Москва
 - Контактная информация:
 
Тоже сталкивался с тем, что выводится какая-то ерунда, если матрица размером достаточно большая. Экспериментально дошел до того, что 5000 записей выводятся без проблем. Может зависить от конкретной конфигурации компьютера? В общем, переделал отчет - теперь идет создание и вывод не одной матрицы, а нескольких матриц размером не более по-моему 5000 шт. записей. Естессно, матрицы создаются и после вывода убиваютсяSerges писал(а):Столкнулся с ограничением функции xlCreateMatrix на количество строк. В доке опять таки про это нет, кто-нибудь может подтвердить и сообщить точное значение потолка?
У меня около 50000 записей. Эксперементальным путем выяснил, что затыкается на 32767 строке.
Пока не разобрался - то ли xlCreateMatrix не может создать такой массив, то ли xlWriteMatrixToExcel не может их в Excel запихать...