Spaces:
Sleeping
Sleeping
File size: 1,705 Bytes
bbc2be0 46b6385 889c29c 6d88ddb fe8fdf5 46b6385 cf202e9 471a2d4 5ce97a5 46b6385 cf202e9 46b6385 cf202e9 6d88ddb bbc2be0 fe8fdf5 e38cf15 fe8fdf5 6d88ddb abd41b9 e38cf15 cf202e9 bbc2be0 6d88ddb 889c29c 6d88ddb 46b6385 fe8fdf5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | import pandas as pd
import json
def parse_excel_file(file_path):
try:
df = pd.read_excel(file_path, header=2)
except Exception as e:
raise ValueError(f"❌ خطا در خواندن فایل اکسل: {str(e)}")
column_mapping = {
"کد": ["کد فهرست بها", "کد"],
"عنوان": ["عنوان", "شرح کالا", "نام کالا"],
"تعداد": ["تعداد", "تعداد مورد نیاز"],
"واحد": ["واحد", "واحد شمارش", "نوع واحد"]
}
resolved_columns = {}
for key, options in column_mapping.items():
found = next((col for col in options if col in df.columns), None)
if not found:
raise ValueError(f"❌ ستون «{key}» در فایل پیدا نشد.")
resolved_columns[key] = found
materials = []
for _, row in df.iterrows():
try:
quantity = float(row[resolved_columns["تعداد"]])
if pd.isna(quantity) or quantity <= 0:
continue
except:
continue
material = {
"code": str(row[resolved_columns["کد"]]).strip(),
"description": str(row[resolved_columns["عنوان"]]).strip(),
"quantity": quantity,
"unit": str(row[resolved_columns["واحد"]]).strip()
}
materials.append(material)
return materials
def save_to_json(data, output_path="material_db.json"):
try:
with open(output_path, "w", encoding="utf-8") as f:
json.dump(data, f, indent=2, ensure_ascii=False)
except Exception as e:
raise ValueError(f"❌ خطا در ذخیره فایل JSON: {str(e)}")
|