Как сохранить электронные таблицы в 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). Передавайте объект параметров, когда необходимо программно переопределить эти значения по умолчанию.

Шаг 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

В: Выдает ли 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 экспортирует полный используемый диапазон активного листа. Чтобы ограничить вывод определённым диапазоном, скопируйте нужные ячейки во временную книгу и экспортируйте эту книгу.

См. также

 Русский