Add(Edit,16153760,581,133)
{
Left=130
Top=110
Width=405
Text="Полный путь к файлу"
}
Add(Button,11294511,434,133)
{
Left=20
Top=110
Width=105
Caption="Выбрать xlsx"
link(onClick,12418851:doExecute,[])
}
Add(Memo,11649951,378,133)
{
Left=15
Top=10
Width=520
Height=90
Strings=#51:Для работы в системе должен быть установлен Python |28:Тестировалось на версии 3.12|27:И дополнительные библиотеки|51:После установки Python в комнадной строке набрать: |20:pip install openpyxl|18:pip install pandas|
}
Add(BitBtn,8443894,371,266)
{
Left=425
Top=140
Width=110
Height=25
Font=[Arial,9,0,0,204]
Caption="xlsx to xml"
link(onClick,14760339:doEvent1,[])
}
Add(ODialog,12418851,490,133)
{
Filter="Excel|*.xls*"
FileName=""
link(onExecute,16153760:doText,[])
}
Add(MainForm,4113618,378,182)
{
Width=561
Height=211
Caption="XLSX to XML"
Position=1
Point(onClose)
link(onClose,10102205:doDelete,[])
}
Add(FormatStr,7180411,602,280)
{
@Hint=#3:Код|
Mask="import pandas as pd\r\nimport xml.etree.ElementTree as ET\r\nfrom datetime import datetime\r\n\r\n# Укажите путь к Excel-файлу\r\nexcel_file = r'%1'\r\n\r\n# Загрузка данных из Excel\r\ndf = pd.read_excel(excel_file, sheet_name='Наличие и цены')\r\n\r\n# Фильтрация данных: исключаем строки, где "Некондиция/распродажа" содержит "Распродажа"\r\nif 'Некондиция/распродажа' in df.columns:\r\n df = df[df['Некондиция/распродажа'] != 'Распродажа']\r\n\r\n# Создание корневого элемента XML\r\nroot = ET.Element('Сток', Дата=datetime.now().strftime("%d.%m.%Y %H:%M"))\r\n\r\n# Преобразование каждой строки DataFrame в XML-элемент\r\nfor index, row in df.iterrows():\r\n товар = ET.SubElement(root, 'Товар', {\r\n 'Группа': str(row['Группа оборудования']),\r\n 'Вид': str(row['Вид оборудования']),\r\n 'Производитель': str(row['Производитель']),\r\n 'НН': str(row['Номенклатурный номер']),\r\n 'Партномер': str(row['Каталожный номер']),\r\n 'Название': str(row['Наименование']),\r\n 'НазваниеРус': str(row['Наименование']), # Если нужно другое значение, укажите его\r\n 'Статус': '', # Пустое значение, так как в данных нет столбца "Статус"\r\n 'Цена': str(row['Цена']),\r\n 'Валюта': str(row['Валюта']),\r\n 'ПроцентКонв': 'call', # Заполните, если есть данные\r\n 'Вес': str(row['Вес (кг)']),\r\n 'Объем': str(row['Объём (м3)']),\r\n 'Ширина': str(row['Ширина (м)']),\r\n 'Высота': str(row['Высота (м)']),\r\n 'Глубина': str(row['Глубина (м)']),\r\n 'ЕдИзм': str(row['Единица измерения'])\r\n })\r\n\r\n # Добавляем вложенный элемент <Склад>\r\n if pd.notna(row['Москва']): # Используем данные из столбца "Москва"\r\n склад = ET.SubElement(товар, 'Склад', Место="ЦО", Количество=str(int(row['Москва'])))\r\n ET.SubElement(склад, 'Склад', Место="ЦО(Москва)", Количество=str(int(row['Москва'])))\r\n\r\n# Создание XML-дерева и запись в файл\r\noutput_xml = r'%2.xml'\r\ntree = ET.ElementTree(root)\r\ntree.write(output_xml, encoding='utf-8', xml_declaration=True)\r\n\r\nprint(f"Файл успешно создан: {output_xml}")"
Point(FString)
link(Str1,15035740:Var2,[(608,236)(587,236)])
link(Str2,13838545:Part1,[])
AddHint(61,-45,34,13,@Hint)
}
Add(StrList,16121741,784,259)
{
FileName="xlsx_xml.py"
Point(doSave)
AddHint(51,-20,67,13,FileName)
}
Add(WinExec,2056341,784,343)
{
FileName="xlsx_xml.py"
Point(doConsoleExec)
Point(onConsoleResult)
AddHint(44,-21,67,13,FileName)
}
Add(Hub,14760339,441,266)
{
OutCount=4
link(onEvent1,13838545:doSplit,[(529,272)(529,202)])
link(onEvent2,16121741:doClear,[(581,279)(581,272)])
link(onEvent3,7180411:doString,[])
link(onEvent4,16063345:doCharset,[(529,293)(529,342)])
}
Add(DoData,10488280,693,343)
{
link(onEventData,8325440:doEvent1,[])
}
Add(Hub,8325440,742,343)
{
link(onEvent1,16121741:doSave,[(764,349)(764,293)])
link(onEvent2,2056341:doShellExec,[])
}
Add(FileTools,10102205,434,189)
{
DelToRecycle=1
FileName="xlsx_xml.py"
AddHint(-22,45,67,13,FileName)
}
Add(Charset,16063345,602,336)
{
Type=6
link(onCharset,2444890:doEvent1,[])
link(Text,7180411:FString,[])
}
Add(Hub,2444890,651,336)
{
link(onEvent1,16121741:doAdd,[(677,342)(677,265)])
link(onEvent2,10488280:doData,[])
}
Add(MultiStrPart,13838545,609,196)
{
Char="."
link(Str,15035740:Var3,[(615,180)])
}
Add(GetDataEx,15035740,581,175)
{
link(Data,16153760:Text,[])
}
Ответов: 143
Рейтинг: 0
|
|||
Немного модернизировал схему, сделал выбор конкретной страницы в файле. Огромное спасибо tig-rrr за помощь )
|
|||
карма: 1 |
|
Редактировалось 2 раз(а), последний 2025-03-07 21:02:20