Як зберегти електронні таблиці у формат CSV за допомогою Python

Як зберегти електронні таблиці у формат CSV за допомогою Python

Проблема

Збережіть книгу Excel (.xlsx) у файл CSV за допомогою Aspose.Cells FOSS у Python. Завантажте книгу за допомогою Workbook(), потім викличте save_as_csv(), щоб записати активний аркуш у файл зі значеннями, розділеними комами. За потреби передайте об’єкт CSVSaveOptions для керування роздільником, кодуванням та поведінкою лапок.

Вимоги

Щоб зберегти електронні таблиці у форматі CSV за допомогою Aspose.Cells FOSS у Python, переконайтеся, що ваше середовище відповідає наступним вимогам.

  • 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). Передайте об’єкт 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 у Windows може очікувати маркер порядку байтів (BOM), щоб правильно розпізнати кодування. Налаштуйте кодування за допомогою CSVSaveOptions і передайте його у save_as_csv().

Багатосторінкові робочі книги експортуються лише один лист

CSV — це формат з однією таблицею; лише один аркуш можна зберегти в одному файлі. Експортуйте кожен аркуш окремо, використовуючи set_active_worksheet(index), як показано у кроці 5.

Клітини, що містять роздільник

Якщо значення комірки містить символ розділювача (наприклад, кому у виводі, розділеному комами), Aspose.Cells FOSS автоматично бере значення в лапки під час експорту. За потреби використовуйте CSVSaveOptions для налаштування поведінки лапок.

FAQ

Q: Чи workbook.save("output.csv") дає той самий результат, що й save_as_csv()?

Так. Workbook.save() перевіряє розширення файлу і делегує save_as_csv(), коли розширення є .csv. Викличте save_as_csv() безпосередньо і передайте екземпляр CSVSaveOptions, коли потрібно налаштувати експорт поза вбудованими значеннями за замовчуванням.

Q: Чи можу я експортувати у рядок 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)

Q: Як завантажити CSV назад у робочу книгу після збереження?

Використайте Workbook.load_csv("file.csv") на існуючому Workbook‑екземплярі, або викличте зручну функцію load_csv_workbook("file.csv") з aspose.cells_foss.csv_handler, щоб отримати готову до використання робочу книгу в один крок.

Q: Які версії Python підтримуються?

Aspose.Cells FOSS вимагає Python 3.7 або новішої версії. Для експорту CSV не потрібні додаткові нативні розширення; бібліотека є чистим Python.

Q: Чи можу я зберегти лише частину листа (діапазон клітинок) у форматі CSV?

Aspose.Cells FOSS експортує повний використаний діапазон активного листа. Щоб обмежити вивід певним діапазоном, скопіюйте потрібні клітинки у тимчасову книгу та експортуйте цю книгу.

Див. також

 Українська