загрузка xml в excel | |
---|---|
danton1973 Автор Сообщений: 122 Откуда: Пермь Дата регистрации: 10.08.2020 |
При загрузке таким образом:
Пытаюсь сделать, что бы наименования полей были расположены в одной колонке, а значения - в строчках справа от них
Какие мысли имеются? У функции WorksheetFunction.Transpose имеются ограничения, которые делают её использование не возможной... :-( ![]() |
Re: загрузка xml в excel | |
---|---|
sphinx Сообщений: 30760 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
А если пойти другим путем - загрузить данные из XML в курсор (через XMLAdapter), потом перегрузить данные в массив (SELECT... INTO ARRAY), а затем полученный массив вставить на лист.
Или через ODBC подключиться к XML и также выгрузить сначала в курсор, потом в массив, массив на лист. ------------------ "Veni, vidi, vici!"(с) ![]() |
Re: загрузка xml в excel | |
---|---|
danton1973 Автор Сообщений: 122 Откуда: Пермь Дата регистрации: 10.08.2020 |
До меня в программе было реализована прямая запись в ячейки. Однако попытка загрузки более 5000 записей в Excel длилась больше двух часов. Так что и через массив будет долго. А данные как раз из курсора и грузятся.
![]()
![]() |
Re: загрузка xml в excel | |
---|---|
Joys Сообщений: 3483 Откуда: Старая Русса Дата регистрации: 25.06.2000 |
Попробуйте через буфер обмена сформируйте данные построчно "Заголовок"+CHR(9)+"Значение"+CHR(13) потом все в _CLIPTEXT потом в excel ActiveSheet.Paste ![]() |
Re: загрузка xml в excel | |
---|---|
akvvohinc Сообщений: 4001 Откуда: Москва Дата регистрации: 11.11.2008 |
Смысл предложения "через массив" не в том, откуда в Excel заносятся данные - из курсора или массива, а в самом способе заполнения ячеек. У вас он поячеечный - то есть при большом количестве данных быстрее наступит даже "отложенная" пенсия, чем окончание этой процедуры. Способ "через массив" подразумевает, что за "один раз" записывается сразу множество ячеек - все элементы массива. На форуме эта тема поднималась множество раз - поищите. ![]() |
Re: загрузка xml в excel | |
---|---|
ssa Сообщений: 12951 Откуда: Москва Дата регистрации: 23.03.2005 |
То есть выбран был самый медленный способ. Цитата:Разумеется. Цитата:А вот это очень спорное утверждение, которое говорит об очень слабой проработке вопроса. Ибо загрузка через массив уже неоднократно доказывала свою значительно большую скорострельность по сравнению со способом поячеечной записи. Цитата:Вот и прелестно! Кидаем из курсора в массив, а из него уже в Excel. Способ давно известный и практически доказавший свою стабильность, скорострельность и т.д. ------------------ Лень - это неосознанная мудрость. ![]() |
Re: загрузка xml в excel | |
---|---|
Ydin Сообщений: 7640 Откуда: Киев Дата регистрации: 16.12.2005 |
В свое время проверял.
С Икселом надо помнить, что в цикле по одной команде всегда будет долго, т.к. этот сам сам вызов берет время. Через карман или массив - это один вызов! Я пользуюсь этими двумя способами. У меня свой построитель отчета из макета. Там везде пытаюсь сократить количество обращений к Иксел. С Вордом, кстати, аналогично ![]() |
Re: загрузка xml в excel | |
---|---|
danton1973 Автор Сообщений: 122 Откуда: Пермь Дата регистрации: 10.08.2020 |
SourceArray - нормальный такой массив получается... А в Excel эти же команды отрабатывают как надо... ![]() |
Re: загрузка xml в excel | |
---|---|
AndyNigmatec Сообщений: 1407 Откуда: Волгоград Дата регистрации: 28.06.2015 |
что касается экспорта из табл/курсора в excel, то здесь уже давно приводили трюк:
поскипал, общий принцип:
работает очень быстро Исправлено 1 раз(а). Последнее : AndyNigmatec, 14.12.22 14:00 ![]() |
Re: загрузка xml в excel | |
---|---|
akvvohinc Сообщений: 4001 Откуда: Москва Дата регистрации: 11.11.2008 |
Кстати, в Фоксе нет команды копирования массива, но с помощью того же трюка это можно делать:
Этот пример показывает, что функция arrayref возвращает не просто ссылку на массив, имя которого в неё передано, а ссылку на копию этого массива. (но это лишь моя интерпретация происходящего) Жаль, что с объектами такой финт не проходит. ![]() Исправлено 3 раз(а). Последнее : akvvohinc, 14.12.22 17:23 ![]() |
Re: загрузка xml в excel | |
---|---|
danton1973 Автор Сообщений: 122 Откуда: Пермь Дата регистрации: 10.08.2020 |
не совсем понял "отсутствие функции копирования массива"?
ACOPY чем не устраивает? ![]() |
Re: загрузка xml в excel | |
---|---|
danton1973 Автор Сообщений: 122 Откуда: Пермь Дата регистрации: 10.08.2020 |
У меня проблема не передать данные массива в Excel, а именно траспонировать его Исправлено 1 раз(а). Последнее : danton1973, 15.12.22 06:30 ![]() |
Re: загрузка xml в excel | |
---|---|
AndyNigmatec Сообщений: 1407 Откуда: Волгоград Дата регистрации: 28.06.2015 |
Мне такого не требовалось, но в чем проблема то сделать это средствами самого excel? навскидку: 1. выводим данные на лист Sheets(1) вышеописанным способом через массив, ну т.е.
второй лист (или даже другой файл можно - на выбор) нам понадобится чтобы вставить транспонируемое 2. далее этот вставленный диапазон копируем и вставляем с транспонированием на другой лист/книгу
в PasteSpecial() нужно поиграть-прописать параметры, в VBA так .PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= False, Transpose:=True данный код не проверял - но думаю где-то так должно вполне сработать )) Исправлено 2 раз(а). Последнее : AndyNigmatec, 15.12.22 09:43 ![]() |
Re: загрузка xml в excel | |
---|---|
danton1973 Автор Сообщений: 122 Откуда: Пермь Дата регистрации: 10.08.2020 |
Я пробовал этот вариант, НО: несколько тысяч записей при нескольких десятков полей.... На старых компах Excel просто трапается...
в общем: решил я эту проблему через создание bas-файла с последующей его загрузкой и выполнением его в само Excel
![]() |
Re: загрузка xml в excel | |
---|---|
akvvohinc Сообщений: 4001 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Всё верно - это сработала моя "историческая память", ведь ACOPY() был не всегда, хотя появился ещё в FPD. ![]() ![]() |
Re: загрузка xml в excel | |
---|---|
AndyNigmatec Сообщений: 1407 Откуда: Волгоград Дата регистрации: 28.06.2015 |
ну так при работе с excel из фокса все это
.EnableEvents= .F. .ScreenUpdating = .F. .DisplayAlerts = .F. а еще и .Visible=.f. подразумевается ))) и неск тыс записей - это сколько? До 10-15 тыс даже для старенького железа это не проблема Не буду ни за что агитировать, нашли выход, он работает - значит хорошо. Но я бы так не стал делать, создавать VBA, запускать его ... когда все решается двумя командами эксельке непосредственно из фокса, и кстати работать по скорости это должно так же - тут же работает сам excel, фокс тока команду дал Исправлено 2 раз(а). Последнее : AndyNigmatec, 15.12.22 14:43 ![]() |
Re: загрузка xml в excel | |
---|---|
akvvohinc Сообщений: 4001 Откуда: Москва Дата регистрации: 11.11.2008 |
Напишите подробнее, в чем именно заключается ваша проблема траспонирования - вы же при выводе в Excel курсора с этим справляетесь. Если даже просто выполнить аналогичные действия, но с выводом не напрямую в Excel, а сначала в массив, то в чем проблема? ![]() |
Re: загрузка xml в excel | |
---|---|
Ydin Сообщений: 7640 Откуда: Киев Дата регистрации: 16.12.2005 |
А что массив в Фоксе нельзя транспонировать?
Матрицу перевернуть очень легко. Или "транспонировать" это не то, что я думаю. Но в Высшей Алгебре это: Dime la1(n1,n2) * и заполнили уже Dime la2(n2,n1) for ln1=1 to n2 for ln2=1 to n1 la2(ln1,ln2) = ln1(ln2,ln1) next next Мне кажется, что тут о чем-то другом... ![]() |
Re: загрузка xml в excel | |
---|---|
of63 Сообщений: 24629 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
> Матрицу перевернуть очень легко.
Золотые слова! Ну, если иметь ввиду "на угол 90 град", транспонировать. () Но можно действительно повернуть на любой угол... И система уравнений, которую она представляет, останется также решаемой, и ее дискриминатнт... вроде... ( vmath.ru ) Это не по теме По теме - надо пример файла, с которым надо что-то сделать, пример без секретных ОД, в небольшом размере. Если в большом размере, и подозрение именно в размере, то все равно хорошо бы посмотреть хоть что-то реальное... А то как об "утке" в амерском сленге, которая похожа "как" Аа, виноватю Можно поворовачивать матрицы, имеющие физический образ (связанные друг с другом элементы, одинаковые размерности элементов матрицы). Произвольную таблицу (из разнородных элементов, можно "повернуть на 90 град" только "визуально" ()() Эрмитовы матрицы, Эххх ()()() и "собственные значения" матрицы (решения уравнения, которая она представляет в виде "диагональной" матрицы) Вобщем, пример автор если даст, то попробуем... Исправлено 5 раз(а). Последнее : of63, 16.12.22 00:46 ![]() |
Re: загрузка xml в excel | |
---|---|
danton1973 Автор Сообщений: 122 Откуда: Пермь Дата регистрации: 10.08.2020 |
Требуется обычный поворот на 90, как написал товарищ Юдин. Просто в Excel это делается быстрее.
Я выше приводил пример кода, когда в Excel нормально транспонируется массив, а эти же команды из под VFP заполняют его значениями первой ячейки. :-( Поэтому пришлось пойти на такое извращение. Засовывать в массив кучу записей с длинными символьными полями и мемо полями... Ну я потестирую, конечно. Однако: "Сумлеваюсь я чего-то. Того и гляди: загремит, под фанфары!" ![]() ![]() |
© 2000-2023 Fox Club  |