Уведомления

Группа в Telegram: @pythonsu

#1 Март 8, 2025 18:41:07

Serascer
Зарегистрирован: 2025-03-08
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите сделать выбор файла Excel

Всем привет, у меня есть код на Python, мне его тоже помогли сделать. Сейчас там путь до файла xlsx прописан в коде. Я хотел бы сделать возможность выбора его самому. Нужно сделать диалоговое окно с выбором файла xlsx. Помогите пожалуйста добавить нужное к моему коду. Я вообще не понимаю в Python.

 import pandas as pd
import xml.etree.ElementTree as ET
from datetime import datetime
# Укажите путь к Excel-файлу
excel_file = r'D:\РАБОТА\1.xlsx'
# Загрузка данных из Excel
df = pd.read_excel(excel_file, sheet_name='Наличие и цены')
# Фильтрация данных: исключаем строки, где "Некондиция/распродажа" содержит "Распродажа"
if 'Некондиция/распродажа' in df.columns:
    df = df[df['Некондиция/распродажа'] != 'Распродажа']
# Создание корневого элемента XML
root = ET.Element('Сток', Дата=datetime.now().strftime("%d.%m.%Y %H:%M"))
# Преобразование каждой строки DataFrame в XML-элемент
for index, row in df.iterrows():
    товар = ET.SubElement(root, 'Товар', {
        'Группа': str(row['Группа оборудования']),
        'Вид': str(row['Вид оборудования']),
        'Производитель': str(row['Производитель']),
        'НН': str(row['Номенклатурный номер']),
        'Партномер': str(row['Каталожный номер']),
        'Название': str(row['Наименование']),
        'НазваниеРус': str(row['Наименование']),  # Если нужно другое значение, укажите его
        'Статус': '',  # Пустое значение, так как в данных нет столбца "Статус"
        'Цена': str(row['Цена']),
        'Валюта': str(row['Валюта']),
        'ПроцентКонв': 'call',  # Заполните, если есть данные
        'Вес': str(row['Вес (кг)']),
        'Объем': str(row['Объём (м3)']),
        'Ширина': str(row['Ширина (м)']),
        'Высота': str(row['Высота (м)']),
        'Глубина': str(row['Глубина (м)']),
        'ЕдИзм': str(row['Единица измерения'])
    })
    # Добавляем вложенный элемент <Склад>
    if pd.notna(row['Москва']):  # Используем данные из столбца "Москва"
        склад = ET.SubElement(товар, 'Склад', Место="ЦО", Количество=str(int(row['Москва'])))
        ET.SubElement(склад, 'Склад', Место="ЦО(Москва)", Количество=str(int(row['Москва'])))
# Создание XML-дерева и запись в файл
output_xml = r'D:\РАБОТА\OCS.xml'
tree = ET.ElementTree(root)
tree.write(output_xml, encoding='utf-8', xml_declaration=True)
print(f"Файл успешно создан: {output_xml}")

Отредактировано Serascer (Март 8, 2025 18:41:54)

Офлайн

#2 Март 8, 2025 20:05:18

Alex.Pro.
От: Марик
Зарегистрирован: 2024-11-13
Сообщения: 73
Репутация: +  2  -
Профиль   Отправить e-mail  

Помогите сделать выбор файла Excel

Serascer
Помогите пожалуйста добавить нужное к моему коду. Я вообще не понимаю в Python.
В качестве помощи, могу сказать что существует модуль filedialog. Для выбора существующего файла можно использовать функцию askopenfilename(). Примерно вот так:
 from tkinter import filedialog
excel_file = filedialog.askopenfilename(title="Выберите имя файла Excel", filetypes=[("Файлы Excel", '*.xlsx'), ("Файлы Excel", '*.xls'), ("Все файлы", "*.*")])
А с помощью функции asksaveasfilename() можно ещё задать имя несуществующего файла.

Это всё чем я могу помочь за “спасибо”. Если же вам нужен человек, который доработает ваш код за вас (уместнее было обращаться в “Центр помощи”) - можем обсудить цену (е-мэйл - в профиле).

Офлайн

#3 Март 9, 2025 05:10:51

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9901
Репутация: +  855  -
Профиль   Отправить e-mail  

Помогите сделать выбор файла Excel

Serascer
Сейчас там путь до файла xlsx прописан в коде. Я хотел бы сделать возможность выбора его самому. Нужно сделать диалоговое окно с выбором файла xlsx.
Можешь вывести имя входного файла для обработки и имя выходного файла для сохранения в аргументы командной строки. При запуске скрипта будешь подавать любые имена/пути файлов. Это через модуль sys делается, в нём есть список argv, в котором можно смотреть все аргументы командной строки, с которыми был вызван скрипт.

Можешь также просто тупо ввести путь к файлу через input(). Бывает и такое - интерактивный режим называется. Но с интерактивным режимом надо делать ещё опцию для его отключения, так как он нужен не всегда, а изредка. Особенно это сказываетсят, когда ты автоматически хочешь делать что-то с пачкой файлов, вот тогда-то все эти диалоги и начинают мешать.



Отредактировано py.user.next (Март 9, 2025 05:17:39)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version