Как да запазим електронни таблици като 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, за да получите готов за използване работен лист в една стъпка.

Q: Кои версии на Python се поддържат?

Aspose.Cells FOSS изисква Python 3.7 или по-нова версия. Не са необходими допълнителни native extensions за CSV експортиране; библиотеката е чисто Python.

В: Мога ли да запазя само част от работен лист (диапазон от клетки) като CSV?

Aspose.Cells FOSS експортира пълния използван обхват на активния работен лист. За да ограничите изхода до конкретен обхват, копирайте желаните клетки във временна работна книга и експортирайте тази работна книга.

Вижте също

 Български