:: Visual Foxpro, Foxpro for DOS
Re: загрузка xml в excel
akvvohinc

Сообщений: 4001
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
Я выше приводил пример кода, когда в Excel нормально транспонируется массив
Что-то я стал терять нить... ))
Так в чем на данный момент проблема - в скорости выполнения всей процедуры или в транспонировании массива?
Или все проблемы решены?

Если проблем больше нет, то, как я понял, задачу вы решили так:
1) массив (без транспонирования) одной командой заносится в Excel (так решается проблема скорости);
2) затем средствами VBA осуществляется транспонирование.

В чём я ошибся?

Цитата:
Засовывать в массив кучу записей с длинными символьными полями и мемо полями
Если чего-то не будет хватать - оперативки, например - то можно закидывать в массив, а затем и в Excel, данные по одному полю за раз (для Excel это будет построчно).
Это не сильно замедлит процесс - ведь полей не тысячи, а десятки, и отпадет необходимость в транспонировании, так как массив будет одномерный.

PS
А вообще, алгоритм, приведенный вами в 3-м сообщении темы можно ускорить - он далек от оптимального.
Например, если я правильно понял, не никакого смысла для каждой записи выполнять этот код, так как значение lcField, получающееся на выходе от записи не зависит - только от номера поля. Значит, достаточно один раз пробежаться по полям и записать в массив получившийся lcField.
У вас же этот код выполняется 5000 раз.
IF ASCAN(THISFORM.faName,laFieldList[m.i,1])#0
m.lcField=laFieldList[m.i,1]
ELSE
m.lcField=ALLTRIM(STRTRAN(laFieldList(m.i,1),'_',' '))
ENDIF
И это я уж не говорю о том, что он у вас вообще лишний, так как сразу за ним значение lcField меняется.

Вот эта команда тоже непонятна. Зачем её выполнять для каждой ячейки? (если незачем, то, думаю, она очень прилично замедляет процесс)
.RANGE(.Cells(m.lnRow,m.i),.Cells(m.lnRow,m.i)).COLUMNS.EntireColumn.AUTOFIT
Да и вообще, зачем использовать RANGE для одной ячейки?
.SELECT тоже, я думаю, лишний.

PPS
Увидел вызов _VFP.EVAL(), понял, что чего-то не знаю.
Этот метод чем-то отличается от обычной функции EVAL(), почему пользуетесь именно им?
Уверен, что функция работает раз в 5 быстрее.
Ratings: 0 negative/0 positive
Re: загрузка xml в excel
danton1973
Автор

Сообщений: 122
Откуда: Пермь
Дата регистрации: 10.08.2020
Transponse в Excel кривой шибко. Обрезает данные :-(
Sub TransponseArray(ByRef taSourceArray, ByRef taTargetArray)
Dim ln1, ln2, lnTopRow, lnTopCol, lnLowRow, lnLowCol As Integer
lnLowRow = LBound(taSourceArray, 1)
lnTopRow = UBound(taSourceArray, 1)
lnLowCol = LBound(taSourceArray, 2)
lnTopCol = UBound(taSourceArray, 2)
ReDim taTargetArray(lnLowCol To lnTopCol, lnLowRow To lnTopRow)
For ln1 = lnLowCol To lnTopCol
For ln2 = lnLowRow To lnTopRow
taTargetArray(ln1, ln2) = taSourceArray(ln2, ln1)
Next
Next
End Sub
Ratings: 0 negative/0 positive
Re: загрузка xml в excel
Ydin

Сообщений: 7640
Откуда: Киев
Дата регистрации: 16.12.2005
Не верю, что Excel транспонирует быстрее. Каждый лишний вызов его - затраты во времени.



Исправлено 1 раз(а). Последнее : Ydin, 16.12.22 12:20
Ratings: 0 negative/0 positive
Re: загрузка xml в excel
danton1973
Автор

Сообщений: 122
Откуда: Пермь
Дата регистрации: 10.08.2020
так я загружаю модуль vba и его исполняю в Excel
m.loVBComponent=.ActiveWorkBook.VBProject.VBComponents.IMPORT(m.lcFile)
.APPLICATION.RUN("'"+.ActiveWorkBook.NAME+"'!CreateXMLList")
.ActiveWorkBook.VBProject.VBComponents.REMOVE(m.loVBComponent)
тогда быстро
Ratings: 0 negative/0 positive
Re: загрузка xml в excel
akvvohinc

Сообщений: 4001
Откуда: Москва
Дата регистрации: 11.11.2008
Так тема закрыта или помощь ещё нужна?
Очевидно, что 2-3 десятка полей и 5000 записей не должны выгружаться в Excel дольше 1-2 минут.
Если у вас дольше, то есть что ускорять.
Ratings: 0 negative/1 positive
Re: загрузка xml в excel
Ydin

Сообщений: 7640
Откуда: Киев
Дата регистрации: 16.12.2005
danton1973
так я загружаю модуль vba и его исполняю в Excel
тогда быстро
Наверно, я так не умею
Ratings: 0 negative/0 positive
Re: загрузка xml в excel
tmp_adr

Сообщений: 182
Дата регистрации: 29.10.2007
я для ускорения ещё отключал в экселе пересчёт формул..
Ratings: 0 negative/0 positive
Re: загрузка xml в excel
akvvohinc

Сообщений: 4001
Откуда: Москва
Дата регистрации: 11.11.2008
tmp_adr
я для ускорения ещё отключал в экселе пересчёт формул..
Если формул нет, всё равно ускоряется?
Ratings: 0 negative/0 positive
Re: загрузка xml в excel
Ydin

Сообщений: 7640
Откуда: Киев
Дата регистрации: 16.12.2005
danton1973
так я загружаю модуль vba и его исполняю в Excel
тогда быстро

Все получилось и хорошо.
Но! Пишешь же на Фоксе, и тут быстрее Фокса не сработает другое любое приложение, если его вызываешь.
Сам вызов его - у тебя Excel.

Вызываешь его конвертацию матрицы!
У Фокса скорость работы с массивами обалденное. Он тут быстрее. Даже проверять не хочу.
Фокс потратит 0.001 секунд. На Фоксе надо делать все, что на нем можно делать.
Сам один пустой вызов Иксел будет дороже этих сказок!

Мне даже не интересно это проверять.
Стоп, у Вас все хорошо и Вы довольны. Давайте все забудем!
Тема удалась, это просто мне хотелось что-то добавить, чтобы Вы поняли, что Ваша тема удалась



Исправлено 5 раз(а). Последнее : Ydin, 19.12.22 18:46
Ratings: 0 negative/0 positive
Re: загрузка xml в excel
of63

Сообщений: 24629
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Ydin
danton1973
так я загружаю модуль vba и его исполняю в Excel
тогда быстро

Все получилось и хорошо.
Но! Пишешь же на Фоксе, и тут быстрее Фокса не сработает другое любое приложение, если его вызываешь.
Сам вызов его - у тебя Excel.

Вызываешь его конвертацию матрицы!
У Фокса скорость работы с массивами обалденное. Он тут быстрее. Даже проверять не хочу.
Фокс потратит 0.001 секунд. На Фоксе надо делать все, что на нем можно делать.
Сам один пустой вызов Иксел будет дороже этих сказок!

Мне даже не интересно это проверять.
Стоп, у Вас все хорошо и Вы довольны. Давайте все забудем!
Тема удалась, это просто мне хотелось что-то добавить, чтобы Вы поняли, что Ваша тема удалась
О времени исполнения косманд - это не имеет смысла о медленнодействии, если уж совсем зависимый от "вебсервисов"... Алгоритмы сложные, решения разрабов/"дилеров" тоже сложные, в ихних временах доступа.

Все делается на "момент покупки", проверки на "сейчас". Как на "рынке", с продаванами.

Да, транспонирование "матрицы" делается в фоксе быстрее, чем нажимать кнопки копировать-специально вставить в экселе, это разное, и у всех аппаратов будут ограничения. Не надо путать массивы 100х100 и на 10^6 х 10^6. Границы уже МЕШАЮТ, посмотрите на Чен-а, с его переходом за границы размера DBF-файла в 2Г в фоксе... Ну, на, уходим на 64-продукт-ы, на МС-СКуЛ, на ПостГре...

Доб. Про МС-СКУл пошутил, накуй

Доб2. И от матрицы зависит. Если она "слабозаполненная" (в основном все элементы пуситые), то еще третья технология транспонирования (вообше не транспонировать, а изменить способ хранения/обращенияК матрицы(е), например, в как курсор ненулевых элементов в трехстолбцовой табличке (индекс1, индекс2..., значение)... Можно тензоры (что больше 2-з индексной матрицы часто называют "тензором", это нормально)

() Недавно почитал про язык ADL. Идея - все обьекты (на обьекты), а числа, пусть будут матрицы (например, комплексное число, 2 (уже вещественных) числа. Что-то не сыграло (ЯП J, K)

()() Аа, я полез про Диод Гана, СВЧ геренратор на полупроводнике... Причем, Ган, его не обьяснил, тав, теорию сделали иностранную ребята, доменную, типа ЛБВ, тоснее самооргунизующуюся генерацию в тонких полупроводниках... Темная история, и особо не нужная, но...



Исправлено 7 раз(а). Последнее : of63, 20.12.22 22:11
Ratings: 0 negative/0 positive
Re: загрузка xml в excel
danton1973
Автор

Сообщений: 122
Откуда: Пермь
Дата регистрации: 10.08.2020
Хочу напомнить, что количество колонок в Excel 16384, а количество строк аж 1048576!
Ratings: 0 negative/0 positive
Re: загрузка xml в excel
akvvohinc

Сообщений: 4001
Откуда: Москва
Дата регистрации: 11.11.2008
danton1973
Хочу напомнить, что количество колонок в Excel 16384, а количество строк аж 1048576!
А почему не захотели напомнить о количестве полей/записей в таблицах Фокса?
У вас (пока) 5000 записей, так что, транспонируя курсор, именно вам надо помнить об ограничениях Excel.
Ratings: 0 negative/0 positive
Re: загрузка xml в excel
sphinx

Сообщений: 30760
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Серег, так про объемы ТС смешно. Я и биллиногованием занимался, Вадя-Пива всерьез ценил, сам с этим крутился. я тему читаю, ты т Алексеевич - все по делу, я же сам предлагал в массив. О, помню, как в Мечел-Сервис пришел... Стоят три компа и фигачат отчеты. Прикольно. Знаю, что можно быстрее. Слушать меня не стали.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: загрузка xml в excel
sphinx

Сообщений: 30760
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
15к? Фигня же. Даже на ДБФ. А ничего, что я данные по биллингу на сотни в базу запихивал? Саня Юдин может помнит - мы с ним на переденем сидении автобуса ехали - я свои изыскания вещал. Так, это молод был. Но решал и это. Тупо мое упрямство. А я придумаю. Обязательно.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: загрузка xml в excel
sphinx

Сообщений: 30760
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Серега!


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 18 (Гостей: 18)

© 2000-2023 Fox Club 
Яндекс.Метрика