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-fossKrok 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.95Krok 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ż
- Jak zapisywać pliki z Aspose.Cells FOSS — ogólny przegląd zapisywania obejmujący XLSX i Markdown
- Jak konwertować CSV do JSON w Pythonie — ładowanie CSV i eksport do formatu JSON
- Jak eksportować Excel do Markdown w Pythonie — eksport tabeli Markdown przy użyciu
save_as_markdown() - Aspose.Cells FOSS dla Pythona: Przewodnik programisty — obszerna dokumentacja funkcji
- Dokumentacja API —
Workbook,CSVHandler,CSVSaveOptions