Jak zapisać arkusze kalkulacyjne jako CSV w Pythonie

Jak zapisać arkusze kalkulacyjne jako CSV w Pythonie

Problem

Zapisz skoroszyt Excela (.xlsx) jako plik CSV za pomocą Aspose.Cells FOSS w Pythonie. Załaduj skoroszyt przy użyciu Workbook(), następnie wywołaj save_as_csv(), aby zapisać aktywny arkusz do pliku z wartościami oddzielonymi przecinkami. Opcjonalnie przekaż obiekt CSVSaveOptions, aby kontrolować separator, kodowanie i zachowanie cudzysłowów.

Wymagania wstępne

Aby zapisywać arkusze kalkulacyjne jako CSV za pomocą Aspose.Cells FOSS w Pythonie, upewnij się, że Twoje środowisko spełnia następujące wymagania.

  • Python 3.7 lub nowszy zainstalowany
  • Zainstaluj Aspose.Cells FOSS za pomocą pip install aspose-cells-foss>=26.3.1
  • Zaimportuj bibliotekę używając from aspose.cells_foss import Workbook
  • Podstawowa znajomość obsługi plików w Pythonie

Kroki zapisywania

Krok 1: Instalacja biblioteki

Zainstaluj Aspose.Cells FOSS z PyPI. Do użytku FOSS nie jest wymagany plik licencji.

pip install aspose-cells-foss

Krok 2: Ładowanie skoroszytu

Utwórz instancję Workbook ze ścieżką do istniejącego pliku .xlsx. Konstruktor akceptuje opcjonalny parametr password dla chronionych skoroszytów.

from aspose.cells_foss import Workbook

workbook = Workbook("input.xlsx")

Aby pracować z zupełnie nowym skoroszytem, pomiń ścieżkę do pliku:

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

Krok 3: Zapisanie aktywnego arkusza jako CSV

Wywołaj Workbook.save_as_csv() z żądaną ścieżką wyjściową. Metoda domyślnie zapisuje pierwszy (aktywny) arkusz.

workbook.save_as_csv("output.csv")

Alternatywnie użyj ogólnej metody Workbook.save() — Aspose.Cells FOSS wnioskuje format CSV z rozszerzenia .csv:

workbook.save("output.csv")

Oba wywołania dają identyczne wyniki, gdy nie są potrzebne niestandardowe opcje.

Krok 4: Zapisywanie z opcjami CSV

Workbook.save_as_csv() akceptuje opcjonalną instancję CSVSaveOptions jako drugi argument. Utwórz instancję CSVSaveOptions z aspose.cells_foss.csv_handler i przekaż ją bezpośrednio, aby kontrolować zachowanie eksportu, na przykład wybór niestandardowego separatora lub kodowania.

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)

Gdy nie przekazano CSVSaveOptions, save_as_csv() używa wbudowanych ustawień domyślnych biblioteki (separator przecinek, kodowanie UTF-8). Przekaż obiekt opcji za każdym razem, gdy musisz programowo nadpisać te ustawienia domyślne.

Krok 5: Eksport określonego arkusza

Gdy skoroszyt zawiera wiele arkuszy, eksportowany jest aktywny arkusz. Użyj Workbook.set_active_worksheet(), aby wybrać arkusz do eksportu przed zapisaniem.

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

Aby wyeksportować każdy arkusz do własnego pliku CSV, iteruj po 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")

Kompletny przykład

Poniższy samodzielny przykład tworzy skoroszyt, wypełnia go przykładowymi danymi i zapisuje zarówno jako standardowy CSV, jak i jako CSV oddzielony średnikami.

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

Typowe problemy

Pusty plik wyjściowy

Jeśli wyjściowy CSV jest pusty lub zawiera tylko puste wiersze, sprawdź, czy wartości komórek zostały przypisane przed wywołaniem save_as_csv(). Metoda eksportuje aktywny arkusz — potwierdź, że właściwy arkusz jest aktywny, używając workbook.get_active_worksheet().

Problemy z kodowaniem (nieczytelne znaki)

Przy otwieraniu CSV w Excelu i wyświetlaniu uszkodzonych znaków sprawdź kodowanie używane podczas eksportu. Aspose.Cells FOSS domyślnie używa UTF-8; Excel w systemie Windows może oczekiwać znacznika kolejności bajtów (BOM), aby poprawnie rozpoznać kodowanie. Skonfiguruj kodowanie przez CSVSaveOptions i przekaż je do save_as_csv().

Skoroszyty z wieloma arkuszami eksportują tylko jeden arkusz

CSV to format jednotabelowy; na plik można zapisać tylko jeden arkusz. Eksportuj każdy arkusz osobno używając set_active_worksheet(index) jak pokazano w Kroku 5.

Komórki zawierające separator

Jeśli wartość komórki zawiera znak separatora (np. przecinek w danych oddzielonych przecinkami), Aspose.Cells FOSS automatycznie umieszcza wartość w cudzysłowie podczas eksportu. Użyj CSVSaveOptions, aby dostosować zachowanie cudzysłowów w razie potrzeby.

Często zadawane pytania

P: Czy workbook.save("output.csv") daje taki sam wynik jak save_as_csv()?

Tak. Workbook.save() sprawdza rozszerzenie pliku i deleguje do save_as_csv(), gdy rozszerzenie to .csv. Wywołaj save_as_csv() bezpośrednio i przekaż instancję CSVSaveOptions, gdy musisz dostosować eksport poza wbudowane ustawienia domyślne.

P: Czy mogę eksportować do łańcucha CSV zamiast do pliku?

Tak. Użyj CSVHandler.save_csv_to_string(workbook, options) z aspose.cells_foss.csv_handler. Zwraca to zawartość CSV jako łańcuch Pythona, który możesz zapisać do strumienia, przesłać lub dalej przetwarzać bez dotykania systemu plików.

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)

P: Jak ponownie załadować CSV do skoroszytu po zapisaniu?

Użyj Workbook.load_csv("file.csv") na istniejącej instancji Workbook, lub wywołaj funkcję pomocniczą load_csv_workbook("file.csv") z aspose.cells_foss.csv_handler, aby uzyskać gotowy skoroszyt w jednym kroku.

P: Które wersje Pythona są obsługiwane?

Aspose.Cells FOSS wymaga Pythona 3.7 lub nowszego. Dla eksportu CSV nie są potrzebne żadne dodatkowe rozszerzenia natywne; biblioteka jest czystym Pythonem.

P: Czy mogę zapisać tylko część arkusza (zakres komórek) jako CSV?

Aspose.Cells FOSS eksportuje cały używany zakres aktywnego arkusza. Aby ograniczyć wyniki do określonego zakresu, skopiuj żądane komórki do tymczasowego skoroszytu i wyeksportuj ten skoroszyt.

Zobacz też

 Polski