|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
Привет всем. Есть множество файлов приаттаченного вида с которыми приходится работать. Хочу облегчить себе работу и импортировать данные в Access и сделать более удобочитаемый вид, точнее форму. Но перед этим данные нужно импортировать из файла. Проблема в том, что количество ячеек динамическое от файла к файлу. Что не изменно, так это название полей в таблицах. Например, "Полный номер сектора". В данном файле это ячейка "A66". Каким образом можно найти "Полный номер сектора", т.е. начало таблицы и определить её окончание по пустому значению этого же столбца? В данном случае это ячейка "A100". Прошу сильно не пинать, т.к. я в этом не силён. Работы меньше не становится и вот этим приходится заниматься в своё личное время :( ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2018, 12:54 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
Не совсем вкурил ТЗ,но хочу сказать: 1.Если планируется импорт таблиц Ёкселя в Акцесс, то при их создании надо забыть об объединении ячеек и пропуске строк(пустых строках) 2.Свойство СurrentRegion определяет количество строк,столбцов в ПРАВИЛЬНО созданной таблице ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2018, 18:19 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
Сижу, мозг кипит. На данном этапе пытаюсь программно получить диапазон таблицы A66:Z99 Код: vbnet 1. 2. 3. 4. 5. 6. 7.
Из дебага получил это: $A$66 66 $A$66:$A$99 ToRight=$A$66:$Z$66 1 Вижу, что если заменить A99=>Z99, то смогу использовать в запросе. Код: vbnet 1.
А нельзя ли как-то использовать XLWs.Range(XLAp.Selection, XLAp.Selection.End(****)).Address для получения итогового диапазона A66:Z99? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2018, 19:21 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
Не мучайтесь с анализом экселевской таблицы, это медленно и мутно. Просто импортируйте все данные листа в таблицу и анализируйте данные уже в таблице. Тут и пустые строки пригодиться могут для анализа. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2018, 08:48 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
MrShinНе мучайтесь с анализом экселевской таблицы, это медленно и мутно. Просто импортируйте все данные листа в таблицу и анализируйте данные уже в таблице. Тут и пустые строки пригодиться могут для анализа. причем я все импортирую в рабочую таблицу в текстовом формате полей , чтобы меньше зависеть от самостийности каждой екселевской клетки --все проверяю и исправляю в аксесс в рабочей таблице --только затем дописываю в основную таблицу, преобразуя текстовый формат в требуемый ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2018, 09:13 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
А по мне так наоборот - можно и форматирование использовать (при анализе прайсов со строковой разбивкой по группам очень помогает). ТС крутится вокруг да около, нашел номер строки создал range, да забрал. все. искать можно и так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
как Range создать надеюсь показывать не надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2018, 11:18 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
aleckoнашел номер строки создал range, да забрал. все На больших файлах это работает очень медленно, в аксе будет на порядок быстрее ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2018, 12:21 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
MrShin, конечно, в аксе быстрее, однако 1. импорт .xls в 7-м аксе часто бывает некорректным -его надо контролировать (может в других версиях таких проблем нет), если открывать эксель как объект - проблем нет, 2. засорение базы ненужными данными 3. бывает необходимость искать с использованием форматирования, хотя конечно в этом случае когда количество строк тысяч от 10 - времени тратится заметно. В данном конкретном случае мы видим номера адресов "А66", "А100" - что не указывает на большие объемы данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2018, 13:08 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
alecko, как Range создать надеюсь показывать не надо? - Желательно :) Для меня акс - палочка выручалочка, часто спасает от рутиной работы. П.С. Я инженер, а не программист. Многому научился благодаря этому форуму, но в рамках решения своих текущих задач. С обработкой экселя сталкивался только на уровне импорт простой таблицы или простой экспорт. Тут задачка посложнее, и желательно сразу правильно понять что к чему. В общем вопросов больше чем ответов. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2018, 14:49 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
АрхимедоффП.С. Я инженер, а не программист. все оттуда. программеры кресты любят. из ТЗ не ясно что Вы именно ходите сделать после того как нашли, то что хотели. тем методом который был показан можно и без Range обойтись - просто проходите куда надо вверх, вниз по таблице, да забираете что хотите, в общем случае если с range , то Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Код: vbnet 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2018, 16:28 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
alecko, 1. Имеем диапазон секторов A66:Z99- импортируем с привязкой к ячейкам С2,С4,С5 (чтобы потом использовать в качестве поиска) 2. Далее импортируем из таблицы "Радиомодули распределенной БС (RRU)" A54:G63 Тип RRU 3. Далее импортируем из таблицы "Антенно-фидерное оборудование" (A102:S108) Электр. наклон, Механич. наклон Вот тут на мой взгляд самое сложное A102:J108. Рассмотрим строку 103. Так в A103 видим D1,G1,L14,L4,L7. Это разные диапазоны, но в одном азимуте. Они фигурируют в столбце D66 и ниже, а левее есть конкретные диапазоны. Самое интересное начинается с F102. Т.к. данные идут через разделитель (800 | 900 | 1800 | 2100 | 2600) , то и углы (I102 и т.д.) также расписаны(0.0 | 4.0 | 3.0 | 0.0 | 3.0). Вот тут глаза очень часто "обламываются". Тяжело воспринимать, особенно к концу дня. В итоге хотел бы получить вот такую таблицу (см. аттач), которую читать намного удобнее. А потом на основе этой таблицы сделать форму. Желтым выделил поля, которые присутствуют в Initial_Data_.xlsx. В результате подгрузил данные и фильтруй как хочешь. В общем работай себе в удовольствие не ломая глаза и не бегая за данными по нескольким источникам :) Буду благодарен за любую помощь. Пока всё тяжко. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2018, 18:29 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
как то так... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2018, 21:55 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
alecko, Обалдеть. Я два дня голову ломаю. Буду смотреть и разбираться с кодом. Единственное что сразу бросилось в глаза в результатах - не корректные данные по переносу RRU. В общем огромное спасибо. И позже будут вопросы :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2018, 00:33 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
aleckoимпорт .xls в 7-м аксе часто бывает некорректным -его надо контролировать Что значит некорректным? Если речь о неправильном распознавании типов данных - так и не нужно полагаться на автораспознавание. Я "грязные" данные всегда импортирую в существующую таблицу с текстовыми колонками, а проверки и распознавание уже потом. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2018, 07:43 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
MrShin, нет - порядок нарушен обычно, часть данных которые должны быть в конце - оказываются впереди - часто это критично, поскольку нумерация делается позже. это бывает и само по себе и после сбоя. бывают файлы такие, что прям приходится "ловить" нужный импорт. перешел на открытие эксель как объекта - все как рукой сняло. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2018, 10:37 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
Архимедофф, поправил, поиск не по тем полям велся - тип антенны не уникальный и тип MCU/RRU оказывается не то же самое что и тип RRU. зато надеюсь в сторону экселя будете теперь более уверенно смотреть :) Эх, если бы форматирование добавить, вот была бы веселуха (хотя принцип думаю понятен)- и Ваш случай как раз для вдумчивого ковыряния , сплиты, лайки... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2018, 12:30 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
Не вникнул в суть объяснения про углы и диапазоны здесь 21380167 , оказывается каждому диапазону соответствует свой угол. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2018, 13:08 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
alecko, Остался последний штрих. Вы для одного Cellid делаете несколько записей, а реально нужна только одна, с правильным эл.углом наклона. Ячейка A103 с данными (D1,G1,L14,L4,L7) . Так D1 - это диапазон DCS 1800 из ячейки C67. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2018, 13:11 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
Вот еще картинка ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2018, 13:13 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
alecko, Опередили меня на пару минут, сейчас посмотрю :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2018, 13:16 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
alecko, Как обратиться к ячейки C4 исходного файла? Хочу дописать проверку в bSave_Click , чтобы выскакивал диалог с предложением, что если данные по такому номеру есть, то выбрать действие: обновить(удалить и записать заново) или ни чего не делать. Хотя, это наверное, правильнее делать на более раннем этапе. И конечно упустил, в таком случае желательно иметь дату, когда данные внеслись в таблицу. П.С. не пойму, на каком этапе Вы обращаетесь к полю Номер и Номер позиции ? А если надо добавить данные, например Наименование (A6) или Адрес (A7)? Где то можно посмотреть через Debug.print? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2018, 14:03 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
Архимедофф, номер строки 61 в модуле класса Код: vbnet 1.
сюда добавлены позиции, которые постоянны, а можно сразу в поле рекордсета добавить данные этих ячеек т.е. добавляете поля в таблицу, если не хватает, и строку 109 модуля класса Код: vbnet 1.
продолжаете Код: vbnet 1.
через debug.print можно смотреть везде :) все. можно по другому: делаем точку останова и в immediate используя оператор print получаем данные нужных переменных, затем можно пройтись по F8 по интересующим строкам ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2018, 15:05 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
Архимедоффчто если данные по такому номеру есть, то выбрать действие: обновить(удалить и записать заново) или ни чего не делать. Хотя, это наверное, правильнее делать на более раннем этапе. И конечно упустил, в таком случае желательно иметь дату, когда данные внеслись в таблицу. в базе 2 таблицы - 1-я куда вносятся данные импорта, пред каждым импортом она очищается 2-я где хранятся данные. проверять можно и во время импорта, однако спрашивать несколько десятков раз -как-то некомильфо внести дату, в смысле текущую? .fields(27)=Date ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2018, 15:18 |
|
динамический импорт из excel
|
|||
---|---|---|---|
#18+
alecko, Спасибо огромное. Вот тут Debug.Print воспользоваться не получилось :( Код: vbnet 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2018, 18:15 |
|
|
start [/forum/topic.php?desktop=1&fid=45&tid=1611440]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 168ms |
0 / 0 |