Как сохранить электронные таблицы в 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 экспортирует полный используемый диапазон активного листа. Чтобы ограничить вывод определённым диапазоном, скопируйте нужные ячейки во временную книгу и экспортируйте эту книгу.
См. также
- How to Save Files with Aspose.Cells FOSS — общий обзор сохранения, охватывающий XLSX и Markdown
- How to Convert CSV to JSON in Python — загрузка CSV и экспорт в формат JSON
- How to Export Excel to Markdown in Python — экспорт таблицы Markdown с использованием
save_as_markdown() - Aspose.Cells FOSS for Python: Developer Guide — полная документация по функциям
- API Reference —
Workbook,CSVHandler,CSVSaveOptions