Hur man sparar kalkylblad som CSV i Python

Hur man sparar kalkylblad som CSV i Python

Problem

Spara en Excel-arbetsbok (.xlsx) som en CSV-fil med Aspose.Cells FOSS i Python. Läs in arbetsboken med Workbook(), anropa sedan save_as_csv() för att skriva det aktiva kalkylbladet till en kommaseparerad fil. Skicka valfritt ett CSVSaveOptions-objekt för att styra avgränsare, kodning och citatteckenbeteende.

Förutsättningar

För att spara kalkylblad som CSV med Aspose.Cells FOSS i Python, se till att din miljö uppfyller följande krav.

  • Python 3.7 eller senare installerat
  • Installera Aspose.Cells FOSS via pip install aspose-cells-foss>=26.3.1
  • Importera biblioteket med from aspose.cells_foss import Workbook
  • Grundläggande kunskaper om filhantering i Python

Sparsteg

Steg 1: Installera biblioteket

Installera Aspose.Cells FOSS från PyPI. Ingen licensfil krävs för FOSS-användning.

pip install aspose-cells-foss

Steg 2: Läs in arbetsboken

Instansiera Workbook med sökvägen till en befintlig .xlsx-fil. Konstruktorn accepterar en valfri password-parameter för skyddade arbetsböcker.

from aspose.cells_foss import Workbook

workbook = Workbook("input.xlsx")

För att arbeta med en helt ny arbetsbok, utelämna filsökvägen:

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

Steg 3: Spara det aktiva bladet som CSV

Anropa Workbook.save_as_csv() med önskad utdatasökväg. Metoden skriver det första (aktiva) kalkylbladet som standard.

workbook.save_as_csv("output.csv")

Alternativt kan du använda den generiska metoden Workbook.save() — Aspose.Cells FOSS härleder CSV-formatet från .csv-tillägget:

workbook.save("output.csv")

Båda anropen ger identisk utdata när inga anpassade alternativ behövs.

Steg 4: Spara med CSV-alternativ

Workbook.save_as_csv() accepterar en valfri CSVSaveOptions-instans som sitt andra argument. Instansiera CSVSaveOptions från aspose.cells_foss.csv_handler och skicka det direkt för att styra exportbeteendet, till exempel att välja en icke-standardavgränsare eller kodning.

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)

När inget CSVSaveOptions skickas använder save_as_csv() bibliotekets inbyggda standardvärden (kommaavgränsare, UTF-8-kodning). Skicka alternativobjektet när du behöver åsidosätta dessa standardvärden programmatiskt.

Steg 5: Exportera ett specifikt kalkylblad

När en arbetsbok innehåller flera blad exporteras det aktiva bladet. Använd Workbook.set_active_worksheet() för att välja vilket blad som ska exporteras innan du sparar.

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")

För att exportera varje blad till sin egen CSV-fil, iterera över 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")

Komplett exempel

Följande fristående exempel skapar en arbetsbok, fyller den med exempeldata och sparar den som både standard-CSV och semikolonseparerad 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.")

Vanliga problem

Tom utdatafil

Om utdata-CSV:n är tom eller bara innehåller tomma rader, kontrollera att cellvärden tilldelades innan save_as_csv() anropades. Metoden exporterar det aktiva kalkylbladet — bekräfta att rätt blad är aktivt med workbook.get_active_worksheet().

Kodningsproblem (oläsliga tecken)

När du öppnar en CSV i Excel och ser skadade tecken, kontrollera kodningen som används vid export. Aspose.Cells FOSS använder UTF-8 som standard; Excel på Windows kan förvänta sig en byte-ordningsmarkering (BOM) för att korrekt känna igen kodningen. Konfigurera kodningen via CSVSaveOptions och skicka den till save_as_csv().

Arbetsböcker med flera blad exporterar bara ett blad

CSV är ett enkeltabellformat; bara ett kalkylblad kan sparas per fil. Exportera varje blad individuellt med set_active_worksheet(index) som visas i Steg 5.

Celler som innehåller avgränsaren

Om ett cellvärde innehåller avgränsartecknet (t.ex. ett komma i kommaseparerad utdata) citerar Aspose.Cells FOSS automatiskt värdet vid export. Använd CSVSaveOptions för att anpassa citatteckenbeteendet om det behövs.

Vanliga frågor

F: Producerar workbook.save("output.csv") samma resultat som save_as_csv()?

Ja. Workbook.save() inspekterar filtillägget och delegerar till save_as_csv() när tillägget är .csv. Anropa save_as_csv() direkt och skicka en CSVSaveOptions-instans när du behöver anpassa exporten utöver de inbyggda standardvärdena.

F: Kan jag exportera till en CSV-sträng istället för en fil?

Ja. Använd CSVHandler.save_csv_to_string(workbook, options) från aspose.cells_foss.csv_handler. Detta returnerar CSV-innehållet som en Python-sträng, som du kan skriva till en ström, ladda upp eller bearbeta vidare utan att röra filsystemet.

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)

F: Hur laddar jag in en CSV tillbaka i en arbetsbok efter att ha sparat?

Använd Workbook.load_csv("file.csv") på en befintlig Workbook-instans, eller anropa bekvämlighetsfunktionen load_csv_workbook("file.csv") från aspose.cells_foss.csv_handler för att få en användningsfärdig arbetsbok i ett steg.

F: Vilka Python-versioner stöds?

Aspose.Cells FOSS kräver Python 3.7 eller senare. Inga ytterligare nativa tillägg behövs för CSV-export; biblioteket är ren Python.

F: Kan jag spara bara en del av ett kalkylblad (ett cellintervall) som CSV?

Aspose.Cells FOSS exporterar hela det använda intervallet på det aktiva kalkylbladet. För att begränsa utdata till ett specifikt intervall, kopiera önskade celler till en tillfällig arbetsbok och exportera den arbetsboken.

Se även

 Svenska