Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 27, 2018 11:41:20

Marsel113
Зарегистрирован: 2018-09-27
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Сортировка данных из Excel в Python

Уважаемые форумчане. Застрял с одной задачей, не могу одолеть, прошу помощи…

Пишу макрос для Компас'а. Нужно отсортировать “данные”из Excel для дальнейшей вставки значений в таблицу Компаса.
Можно и в Python и в VBA.

Не могу понятьдо конца, как это сделать… Не хватает знаний…

Прикреплённый файлы:
attachment на форум.xlsx (12,1 KБ)

Офлайн

#2 Сен. 27, 2018 11:42:01

Marsel113
Зарегистрирован: 2018-09-27
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Сортировка данных из Excel в Python

Вот часть кода

Прикреплённый файлы:
attachment 01.txt (2,4 KБ)

Офлайн

#3 Сен. 28, 2018 08:20:43

Rafik
Зарегистрирован: 2018-09-04
Сообщения: 231
Репутация: +  27  -
Профиль   Отправить e-mail  

Сортировка данных из Excel в Python

Вот фрагмент, собирающий данные из первой таблицы для добавления в таблицу номер 2
Обрати внимание на нумерацию строк-колонок для таблицы Excell. Я не разбираюсь в VBA и поэтому здесь я пишу реальные номера строк-колонок. Если в твоём скрипте используются индексы, то внеси соответствующие поправки в нумерацию.

 # Для сбора значений используем словарь. У словаря в качестве ключа используются
# только уникальные значения
data_for_table = {}
for col in range(1,15):
    # Здесь использована нумерация строк и колонок как в самой исходной таблице
    # т.е. ячейка В2 здесь нумерована как (2, 2)
    # Если у тебя в нумерации используются  индексы, то необходимо исправить нумерацию
    tip = sheet.cells(2, col).value
    polusa = sheet.cells(3, col).value
    amper = sheet.cells(4, col).value
    nomer =  sheet.cells(5, col).value
    # В качестве ключа будет строка в виде "полюса/ампер"
    kluch = "{}/{}".format(polusa, amper)
    #  Сольём в одну строку тип и номер
    tip_s_nom = "{}{}".format(tip, nomer)
    # ----------- Краткая запись предыдущих строк ---------------------
    # kluch = "{}/{}".format(sheet.cells(3, col).value, sheet.cells(4, col).value)
    # tip_s_nom = "{}{}".format(sheet.cells(2, col).value, sheet.cells(5, col).value)
    # ----------- Конец краткой записи ------------------------------
    #  Проверим есть ли ключ в словаре
    if kluch in data_for_table:
        # Ключ есть, берём его значение
        znachenie = data_for_table[kluch]
    else:
        # Нет ключа, создадим пустой список для значения
        znachenie = []
    # На всякий случай проверим есть ли такой тип в списке
    if not (tip_s_nom in znachenie):
        znachenie.append(tip_s_nom)  # Добавим в список отсутствующий
        data_for_table[kluch] = znachenie  # запишем или перепишем имеющийся
# После работы цикла получим словарь с приблизительно таким содержимым:
#{"1/16":["QF6", "QF10", "QF11", "QF12", "QF13"], "3/32":["QF1"], и т.д.}
# Для записи в тот же Excell в цикле "расшифруем" содержимое словаря
for key, item in data_for_table.items():
    spolusa, samper = key.split("/")  # разобъём строку по символу "/"
    # Если требуется числовое значение, то надо будет преобразовать
    # строку в число
    polusa = int(spolusa) # Преобразуем в число
    amper = int(samper)  # Преобразуем в число
    tipi =",".join(item)  # Соберём строку из списка
    # Данные для одной строки записи получены, их можно писать.

Офлайн

#4 Сен. 30, 2018 22:05:05

Marsel113
Зарегистрирован: 2018-09-27
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Сортировка данных из Excel в Python

Уважаемый Rafik, Вы спасли меня! От долгих и мучительных исканий и метаний! Огромное Вам спасибо! Спасибо, что делитесь Вашими знаниями!
Это то, что нужно!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version