كيفية حفظ جداول البيانات كملف CSV في بايثون

كيفية حفظ جداول البيانات كملف CSV في بايثون

مشكلة

احفظ مصنف Excel (.xlsx) كملف CSV باستخدام Aspose.Cells FOSS في Python. حمّل المصنف باستخدام Workbook()، ثم استدعِ save_as_csv() لكتابة ورقة العمل النشطة إلى ملف قيم مفصولة بفواصل. يمكنك اختياريًا تمرير كائن CSVSaveOptions للتحكم في الفاصل، الترميز، وسلوك الاقتباس.

المتطلبات المسبقة

لحفظ جداول البيانات كملفات CSV باستخدام Aspose.Cells FOSS في بايثون، تأكد من أن بيئتك تلبي المتطلبات التالية.

  • تم تثبيت Python 3.7 أو أحدث
  • تثبيت Aspose.Cells FOSS عبر pip install aspose-cells-foss>=26.3.1
  • استيراد المكتبة باستخدام from aspose.cells_foss import Workbook
  • إلمام أساسي بمعالجة ملفات Python

خطوات الحفظ

الخطوة 1: تثبيت المكتبة

قم بتثبيت Aspose.Cells FOSS من PyPI. لا يلزم ملف ترخيص لاستخدام FOSS.

pip install aspose-cells-foss

الخطوة 2: تحميل المصنف

قم بإنشاء Workbook باستخدام المسار إلى ملف .xlsx موجود. يقبل المُنشئ معاملًا اختياريًا password لدفاتر العمل المحمية.

from aspose.cells_foss import Workbook

workbook = Workbook("input.xlsx")

للعمل مع مصنف جديد تمامًا بدلاً من ذلك، احذف مسار الملف:

from aspose.cells_foss import Workbook

workbook = Workbook()
worksheet = workbook.worksheets[0]

# Populate some cells
worksheet.cells["A1"].value = "Product"
worksheet.cells["B1"].value = "Price"
worksheet.cells["A2"].value = "Widget"
worksheet.cells["B2"].value = 9.99
worksheet.cells["A3"].value = "Gadget"
worksheet.cells["B3"].value = 24.95

الخطوة 3: حفظ الورقة النشطة كملف CSV

استدعِ Workbook.save_as_csv() مع مسار الإخراج المطلوب. تقوم الطريقة بكتابة ورقة العمل الأولى (النشطة) بشكل افتراضي.

workbook.save_as_csv("output.csv")

بدلاً من ذلك، استخدم الطريقة العامة Workbook.save() — تقوم Aspose.Cells FOSS باستخلاص تنسيق CSV من امتداد .csv:

workbook.save("output.csv")

كلا الاستدعائين ينتجان مخرجات متطابقة عندما لا تكون هناك حاجة إلى خيارات مخصصة.

الخطوة 4: حفظ باستخدام خيارات CSV

Workbook.save_as_csv() يقبل كائن CSVSaveOptions اختياري كوسيطه الثاني. أنشئ CSVSaveOptions من aspose.cells_foss.csv_handler ومرره مباشرة للتحكم في سلوك التصدير، مثل اختيار فاصل غير افتراضي أو ترميز.

from aspose.cells_foss import Workbook
from aspose.cells_foss.csv_handler import CSVSaveOptions

workbook = Workbook("input.xlsx")

# Create options instance — configure attributes per your environment's needs
options = CSVSaveOptions()

workbook.save_as_csv("output_custom.csv", options)

عند عدم تمرير CSVSaveOptions، يستخدم save_as_csv() القيم الافتراضية المدمجة في المكتبة (فاصل الفواصل، ترميز UTF-8). مرّر كائن الخيارات كلما احتجت إلى تجاوز تلك القيم الافتراضية برمجياً.

الخطوة 5: تصدير ورقة عمل محددة

عند وجود مصنف يحتوي على عدة أوراق، يتم تصدير الورقة النشطة. استخدم Workbook.set_active_worksheet() لاختيار الورقة التي تريد تصديرها قبل الحفظ.

from aspose.cells_foss import Workbook

workbook = Workbook("multi_sheet.xlsx")

# Export the second worksheet (index 1)
workbook.set_active_worksheet(1)
workbook.save_as_csv("sheet2_output.csv")

لتصدير كل ورقة إلى ملف CSV خاص بها، قم بالتكرار على workbook.worksheets:

from aspose.cells_foss import Workbook

workbook = Workbook("multi_sheet.xlsx")

for index in range(len(workbook.worksheets)):
    ws = workbook.get_worksheet_by_index(index)
    workbook.set_active_worksheet(index)
    workbook.save_as_csv(f"sheet_{ws.name}.csv")

مثال كامل

المثال التالي المستقل يُنشئ مصنفًا، يملأه ببيانات عينة، ويحفظه كملف CSV قياسي وملف CSV مفصول بفواصل منقوطة.

from aspose.cells_foss import Workbook
from aspose.cells_foss.csv_handler import CSVSaveOptions

# Create workbook and populate data
workbook = Workbook()
worksheet = workbook.worksheets[0]

headers = ["Name", "Department", "Salary"]
rows = [
    ["Alice", "Engineering", 95000],
    ["Bob",   "Marketing",   72000],
    ["Carol", "Finance",     81000],
]

for col, header in enumerate(headers):
    col_letter = chr(ord("A") + col)
    worksheet.cells[f"{col_letter}1"].value = header

for row_idx, row in enumerate(rows, start=2):
    for col_idx, val in enumerate(row):
        col_letter = chr(ord("A") + col_idx)
        worksheet.cells[f"{col_letter}{row_idx}"].value = val

# Save as standard CSV (default options)
workbook.save_as_csv("employees.csv")

# Save with explicit CSVSaveOptions instance
options = CSVSaveOptions()
workbook.save_as_csv("employees_custom.csv", options)

print("CSV files written successfully.")

مشكلات شائعة

ملف إخراج فارغ

إذا كان ملف CSV الناتج فارغًا أو يحتوي فقط على أسطر فارغة، تحقق من أنه تم تعيين قيم الخلايا قبل استدعاء save_as_csv(). الطريقة تصدر ورقة العمل النشطة — تأكد من أن الورقة الصحيحة نشطة باستخدام workbook.get_active_worksheet().

مشكلات الترميز (الأحرف المشوشة)

عند فتح ملف CSV في Excel ورؤية أحرف مشوهة، تحقق من الترميز المستخدم أثناء التصدير. Aspose.Cells FOSS يستخدم UTF-8 كإعداد افتراضي؛ قد يتوقع Excel على Windows وجود علامة ترتيب البايت (BOM) للتعرف على الترميز بشكل صحيح. قم بتكوين الترميز عبر CSVSaveOptions ومرره إلى save_as_csv().

دفاتر عمل متعددة الأوراق تصدر ورقة واحدة فقط

CSV هو تنسيق جدول واحد؛ يمكن حفظ ورقة عمل واحدة فقط لكل ملف. صدّر كل ورقة على حدة باستخدام set_active_worksheet(index) كما هو موضح في الخطوة 5.

الخلايا التي تحتوي على الفاصل

إذا كان قيمة الخلية تحتوي على حرف الفاصل (مثلاً، فاصلة في إخراج مفصول بفواصل)، فإن Aspose.Cells FOSS يضيف علامات اقتباس تلقائيًا للقيمة أثناء التصدير. استخدم CSVSaveOptions لتخصيص سلوك الاقتباس إذا لزم الأمر.

الأسئلة المتكررة

س: هل ينتج workbook.save("output.csv") النتيجة نفسها مثل save_as_csv()؟

نعم. Workbook.save() يفحص امتداد الملف ويفوض إلى save_as_csv() عندما يكون الامتداد هو .csv. استدعِ save_as_csv() مباشرةً ومرّر كائن CSVSaveOptions عندما تحتاج إلى تخصيص التصدير بما يتجاوز الإعدادات الافتراضية المدمجة.

س: هل يمكنني تصدير إلى سلسلة CSV بدلاً من ملف؟

نعم. استخدم CSVHandler.save_csv_to_string(workbook, options) من aspose.cells_foss.csv_handler. هذا يُعيد محتوى CSV كسلسلة Python، والتي يمكنك كتابتها إلى تدفق، أو رفعها، أو معالجتها لاحقًا دون لمس نظام الملفات.

from aspose.cells_foss import Workbook
from aspose.cells_foss.csv_handler import CSVHandler, CSVSaveOptions

workbook = Workbook("input.xlsx")
csv_string = CSVHandler().save_csv_to_string(workbook, CSVSaveOptions())
print(csv_string)

س: كيف يمكنني تحميل ملف CSV مرة أخرى إلى دفتر العمل بعد الحفظ؟

استخدم Workbook.load_csv("file.csv") على نسخة Workbook موجودة، أو استدعِ دالة الراحة load_csv_workbook("file.csv") من aspose.cells_foss.csv_handler للحصول على دفتر عمل جاهز للاستخدام في خطوة واحدة.

س: ما إصدارات Python المدعومة؟

يتطلب Aspose.Cells FOSS Python 3.7 أو أحدث. لا تحتاج أي امتدادات أصلية إضافية لتصدير CSV؛ المكتبة هي Python نقي.

س: هل يمكنني حفظ جزء فقط من ورقة العمل (نطاق خلايا) كملف CSV؟

يقوم Aspose.Cells FOSS بتصدير النطاق المستخدم بالكامل للورقة النشطة. لتقييد الإخراج بنطاق محدد، انسخ الخلايا المطلوبة إلى مصنف مؤقت وقم بتصدير ذلك المصنف.

انظر أيضًا

 العربية