حماية الدفعالتفاصيل
- التعديلات ضمن الباقة مجانية.
- إذا لم تردّ خلال 3 أيام من التسليم، يُقبل العمل تلقائيًا.
يُحجز المبلغ عند الدفع ولا يُحوَّل إلا بعد قبولك العمل.

مثال على النتيجة
دمج ملفات المبيعات الشهرية لـ 9 متاجر في تقرير Excel واحد
طريقة التشغيل
python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO المجلد: sales/2026-10، عُثر على 9 ملفات
2026-11-02 09:14:03 INFO shop-01.csv: 1,284 صفًا
2026-11-02 09:14:04 INFO shop-02.xlsx: 967 صفًا
2026-11-02 09:14:04 WARN shop-07.csv: تُخطّيت 3 صفوف بلا سعر (الأسطر 88، 412، 913)
2026-11-02 09:14:05 INFO تم: 10,412 صفًا -> report-2026-10.xlsx (الورقتان «المبيعات» و«الإجماليات»)
إعدادات لا كود
أسماء أعمدة كل متجر موجودة في settings.ini، فالمتجر الجديد أو العمود الذي تغيّر اسمه يعني سطرًا واحدًا هناك:
[columns]
date = التاريخ, تاريخ البيع, اليوم
product = المنتج, الصنف, الاسم
quantity = الكمية, العدد, قطع
price = السعر, سعر الوحدة
جزء من الكود
def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
"""يقرأ ملف متجر واحد ويمنح أعمدته أسماء أعمدة التقرير."""
table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
renamed = {}
for name, variants in columns.items():
found = next((c for c in table.columns if c.strip() in variants), None)
if found is None:
raise ReportError(f"{path.name}: لا يوجد عمود لـ «{name}» (جرى البحث عن: {', '.join(variants)})")
renamed[found] = name
table = table.rename(columns=renamed)[list(columns)]
table["shop"] = path.stem
return table
الملفات: أرشيف ZIP يضم merge_sales.py (310 أسطر)، وsettings.ini، وrequirements.txt، وملف README يشرح تثبيت Python وتشغيل السكربت ومعنى كل رسالة في السجل. يشغّله العميل على كمبيوتره الخاص.
العميل: سلسلة صغيرة من 9 متاجر للأدوات المكتبية؛ يرسل كل متجر مبيعاته الشهرية في ملف CSV أو Excel، بأسماء أعمدة تختلف قليلًا من متجر إلى آخر. المهمة: سكربت واحد يقرأ كل ملف في مجلد، ويوحّد الأعمدة في شكل واحد، ويكتب تقرير Excel واحدًا يضم كل المبيعات وورقة بالإجماليات حسب المتجر.
العميل وجميع التفاصيل افتراضية.
عن هذه الخدمة
كثير من الأنظمة لا تقبل البيانات إلا بصيغة JSON أو XML: استيراد إلى متجر أو نظام CRM، أو رفع لدى شريك، أو موجز بيانات لتطبيق. يقرأ سكربت Python هذا ملف CSV المصدَّر لديك ويكتب الملف بالبنية التي تحتاجها: أسماء الحقول، والحقول المتداخلة داخل غيرها، والأرقام والتواريخ بأنواعها الصحيحة، والترميز. في الباقة المميزة يمكنه أيضًا تجميع الصفوف في سجل واحد، مثل طلب مع كل عناصره. أرسل إلينا بضعة صفوف من ملف CSV ومثالًا أو وصفًا لملف JSON أو XML الذي يطلبه الطرف الآخر (وثائقه أو ملفًا نموذجيًا). تشغّل السكربت بنفسك على جهازك. إنه يحوّل البيانات التي تعطيه إياها: لا يرفع النتيجة إلى أي مكان ولا يتحقق منها مقابل النظام الآخر.
ما المشمول
- ما الذي تحصل عليهأرشيف ZIP يضم سكربت Python وملف README بتعليمات خطوة بخطوة، ومن الباقة القياسية ملف إعدادات بربط الأعمدة بالحقول؛ ويُعرض الكود أيضًا في صفحة الطلب.
- JSON أو XMLأو كلاهما معًا من ملف CSV واحد
- بنيتك الخاصةأسماء الحقول وتداخلها كما في نموذجك أو وثائقك
- أنواع صحيحةأرقام وقيم true أو false وتواريخ بالصيغة التي تحتاجها
- معالجة الترميزاتإخراج بترميز UTF-8 من CSV بأي ترميز شائع
- كود مقروءمع تعليقات، ليسهل إضافة حقل لاحقًا
كيف يعمل
- 1النماذجترسل بضعة صفوف CSV ونموذجًا لملف JSON أو XML الذي تحتاجه
- 2الكودنكتب السكربت ودليل تشغيله
- 3جرّبهتحوّل ملفك وتجربه في النظام الذي يحتاجه
- 4التعديلاتتطلب التعديلات ضمن باقتك وترسل أي رسالة خطأ
ما نحتاجه منك
10-20 صفًا من ملف CSV لديك (القيم المختلقة لا بأس بها)، وما يجب أن تكون عليه النتيجة: ملف JSON أو XML نموذجي، أو الجزء من وثائق النظام الآخر الذي يصفه، أو مخطط XSD إن وُجد. أي عمود يذهب إلى أي حقل، وكيف تُكتب التواريخ والأرقام، وهل تشكّل عدة صفوف سجلًا واحدًا. نظامك: Windows أو macOS أو Linux.
سنسألك:
- إلى أين سيذهب ملف JSON أو XML؟
- كيف يبدو ملف CSV؟
- كيف يجب أن تبدو النتيجة؟
- أين سيعمل؟
قارن بين الباقات
| الباقات | الأساسيةتحويل بسيط واحد16 US$ | القياسيةالتحويل مع الإعدادات33 US$ | المميزةأداة التحويل67 US$ |
|---|---|---|---|
| مدة التنفيذ | 1 يوم | 2 يوم | 3 أيام |
| التعديلات | 1 | 2 | 3 |
| الكود | حتى 150 سطرًا | حتى 400 سطر | حتى 1,000 سطر |
| ملفات الكود | 1 | حتى 3 | حتى 8 |
| ملف الإعدادات | لا | نعم | نعم |
| رسائل خطأ واضحة وسجل | لا | نعم | نعم |
| خيارات التشغيل ودليل لتشغيله وفق جدول زمني | لا | لا | نعم |
| دليل التثبيت والتشغيل (README) | نعم | نعم | نعم |
| اللغة | Python | Python | Python |
| اطلب الأساسية | اطلب القياسية | اطلب المميزة |
حماية الدفع
تدفع عند الطلب، لكن المبلغ لا يُحوَّل إلا مقابل عمل قبلته.
- سعر ثابتلا يتغير سعر الباقة بعد الدفع.
- المبلغ محجوزعند الدفع، يُحجز المبلغ فقط. ولا يُحوَّل إلى Dleex إلا بعد قبولك العمل.
- فحص قبل التسليمتخضع كل نتيجة لفحص الجودة قبل أن تصل إليك، وتراها في صفحة الطلب قبل قبولها.
- تعديلات مجانيةاطلب تعديلات ضمن متطلبات طلبك بالعدد الذي تسمح به الباقة.
- القبول بعد 3 أيامإذا لم تقبل العمل ولم تطلب تعديلات خلال 3 أيام من التسليم، يُقبل تلقائيًا. وإذا كتبت في محادثة الطلب بعد التسليم، يبقى الطلب قيد الانتظار؛ وبعد ردّنا، قد نعيد بدء مهلة 3 أيام وسنُعلمك بذلك في المحادثة.
- إعادة التنفيذ أو استرداد المبلغ كاملًاإذا لم تطابق النتيجة متطلبات طلبك ولم تُصلحها التعديلات، أو استغرق العمل أكثر من ضعف مدة التنفيذ، فاكتب في محادثة الطلب: سنعيد تنفيذ العمل أو نردّ إليك المبلغ كاملًا.
الأسئلة والأجوبة
هل يمكنه التحقق من XML مقابل مخطط؟
في الباقة المميزة نعم، إن أرسلت ملف XSD: يبلّغ السكربت عن الصفوف غير المطابقة. أما قبول النظام الآخر للملف في النهاية فيعتمد على عمليات التحقق الخاصة به.
هل يمكنه العمل بالاتجاه المعاكس، من JSON إلى CSV؟
نعم، إنه النوع نفسه من العمل. صِف ذلك في متطلبات الطلب وأرسل نموذجًا من JSON.
هل يمكنه إرسال النتيجة إلى API؟
هذا العرض يُنشئ الملف. ويمكن إضافة إرساله إلى API خدمة ما ضمن حد الأسطر في الباقة المميزة، إن كانت للخدمة API عامة ووضعت مفتاحك الخاص في ملف الإعدادات.
هل أحتاج إلى معرفة البرمجة؟
لا. يشرح ملف README كيفية تثبيت Python مرة واحدة وتشغيل السكربت على ملفك.
لم تجد إجابتك؟