چگونه صفحات گسترده را به‌صورت CSV در پایتون ذخیره کنیم

چگونه صفحات گسترده را به‌صورت CSV در پایتون ذخیره کنیم

مسئله

یک کتاب‌کار Excel (.xlsx) را به‌عنوان فایل CSV با استفاده از Aspose.Cells FOSS در پایتون ذخیره کنید. کتاب‌کار را با 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

مرحله ۲: بارگذاری کتاب‌کار

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

مرحله ۳: ذخیره شیت فعال به‌صورت CSV

متد Workbook.save_as_csv() را با مسیر خروجی مورد نظر فراخوانی کنید. این متد به‌طور پیش‌فرض اولین شیت (فعال) را می‌نویسد.

workbook.save_as_csv("output.csv")

به‌جای آن، از روش عمومی Workbook.save() استفاده کنید — Aspose.Cells FOSS قالب CSV را از پسوند .csv استنتاج می‌کند:

workbook.save("output.csv")

هر دو فراخوانی خروجی یکسانی تولید می‌کنند وقتی گزینه‌های سفارشی لازم نیست.

مرحله ۴: ذخیره با گزینه‌های 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) استفاده می‌کند. هر زمان که نیاز به تغییر این مقادیر پیش‌فرض به‌صورت برنامه‌نویسی داشته باشید، شیء options را پاس کنید.

مرحله 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 در ویندوز ممکن است برای تشخیص صحیح رمزگذاری، یک علامت ترتیب بایت (BOM) را انتظار داشته باشد. رمزگذاری را از طریق CSVSaveOptions پیکربندی کنید و آن را به save_as_csv() پاس دهید.

کتاب‌های کاری چندبرگه‌ای فقط یک برگه را صادر می‌کند

CSV یک فرمت تک‌جدولی است؛ فقط یک برگه می‌تواند در هر فایل ذخیره شود. هر برگه را به‌صورت جداگانه با استفاده از set_active_worksheet(index) همان‌طور که در گام 5 نشان داده شده است، صادر کنید.

سلول‌های حاوی جداکننده

اگر مقدار یک سلول شامل کاراکتر جداکننده باشد (مثلاً یک کاما در خروجی با جداکننده کاما)، Aspose.Cells FOSS به‌صورت خودکار مقدار را هنگام خروجی‌گیری نقل‌قول می‌کند. در صورت نیاز از CSVSaveOptions برای سفارشی‌سازی رفتار نقل‌قول استفاده کنید.

پرسش‌های متداول

س: آیا workbook.save("output.csv") همان نتیجه را تولید می‌کند که save_as_csv()؟

بله. Workbook.save() پسوند فایل را بررسی می‌کند و وقتی پسوند .csv باشد به save_as_csv() واگذار می‌شود. وقتی نیاز به سفارشی‌سازی خروجی فراتر از پیش‌فرض‌های داخلی دارید، save_as_csv() را مستقیماً فراخوانی کنید و یک نمونه CSVSaveOptions را پاس دهید.

پرسش: آیا می‌توانم به‌جای فایل، به یک رشته CSV صادر کنم؟

بله. از CSVHandler.save_csv_to_string(workbook, options) در aspose.cells_foss.csv_handler استفاده کنید. این محتویات CSV را به‌صورت یک رشته پایتون برمی‌گرداند که می‌توانید آن را به یک جریان بنویسید، بارگذاری کنید یا بدون دست زدن به سیستم فایل، پردازش‌های بیشتری انجام دهید.

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 فراخوانی کنید تا یک دفتر کار آماده‌به‌کار در یک مرحله دریافت کنید.

س: کدام نسخه‌های پایتون پشتیبانی می‌شوند؟

Aspose.Cells FOSS به Python 3.7 یا بالاتر نیاز دارد. برای خروجی CSV نیازی به افزونه‌های بومی اضافی نیست؛ کتابخانه کاملاً پایتون است.

س: آیا می‌توانم فقط بخشی از یک کاربرگ (یک بازه سلولی) را به عنوان CSV ذخیره کنم؟

Aspose.Cells FOSS محدوده کامل استفاده‌شده از برگه کاری فعال را صادر می‌کند. برای محدود کردن خروجی به یک محدوده خاص، سلول‌های مورد نظر را به یک کتاب‌کار موقت کپی کنید و آن کتاب‌کار را صادر کنید.

همچنین ببینید

 فارسی