PythonでスプレッドシートをCSVとして保存する方法

PythonでスプレッドシートをCSVとして保存する方法

問題

Python で Aspose.Cells FOSS を使用して Excel ワークブック (.xlsx) を CSV ファイルとして保存します。Workbook() を使用してワークブックをロードし、次に save_as_csv() を呼び出してアクティブなワークシートをカンマ区切り値ファイルに書き込みます。オプションで CSVSaveOptions オブジェクトを渡して、区切り文字、エンコーディング、引用符の動作を制御できます。

前提条件

PythonでAspose.Cells FOSSを使用してスプレッドシートをCSVとして保存するには、環境が以下の要件を満たしていることを確認してください。

  • Python 3.7 以降がインストールされていること
  • pip install aspose-cells-foss>=26.3.1 を使用して Aspose.Cells FOSS をインストール
  • from aspose.cells_foss import Workbook を使用してライブラリをインポート
  • Python のファイル操作に基本的に慣れていること

保存手順

ステップ 1: ライブラリをインストール

PyPI から Aspose.Cells FOSS をインストールします。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 インスタンスを第2引数として受け取ります。aspose.cells_foss.csv_handler から CSVSaveOptions をインスタンス化し、非デフォルトの区切り文字やエンコーディングの選択など、エクスポート動作を直接制御するために渡します。

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() を使用して正しいシートがアクティブであることを確認してください。

エンコーディングの問題(文字化け)

ExcelでCSVを開いたときに文字化けが発生したら、エクスポート時に使用されたエンコーディングを確認してください。Aspose.Cells FOSS はデフォルトで UTF-8 です。Windows の Excel はエンコーディングを正しく認識するためにバイトオーダーマーク (BOM) が必要な場合があります。CSVSaveOptions でエンコーディングを設定し、save_as_csv() に渡してください。

マルチシート ワークブックが1枚のシートのみエクスポート

CSV は単一テーブル形式で、1 ファイルにつき 1 つのワークシートしか保存できません。ステップ 5 に示すように set_active_worksheet(index) を使用して各シートを個別にエクスポートしてください。

区切り文字を含むセル

セルの値に区切り文字(例: カンマ区切り出力のカンマ)が含まれている場合、Aspose.Cells FOSS はエクスポート時に自動的に値を引用符で囲みます。必要に応じて CSVSaveOptions を使用して引用符の動作をカスタマイズしてください。

よくある質問

Q: workbook.save("output.csv")save_as_csv() と同じ結果を生成しますか?

はい。Workbook.save() はファイル拡張子を検査し、拡張子が .csv の場合は save_as_csv() に委譲します。組み込みのデフォルトを超えてエクスポートをカスタマイズする必要がある場合は、save_as_csv() を直接呼び出し、CSVSaveOptions インスタンスを渡してください。

Q: ファイルではなく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)

Q: 保存した後、CSV をワークブックに再度ロードするにはどうすればよいですか?

既存の Workbook インスタンスに Workbook.load_csv("file.csv") を使用するか、aspose.cells_foss.csv_handler から便利関数 load_csv_workbook("file.csv") を呼び出して、ワンステップで使用可能なワークブックを取得します。

Q: サポートされている Python のバージョンは何ですか?

Aspose.Cells FOSS は Python 3.7 以降が必要です。CSV エクスポートに追加のネイティブ拡張は必要ありません; ライブラリは純粋な Python です。

Q: ワークシートの一部(セル範囲)だけをCSVとして保存できますか?

Aspose.Cells FOSS はアクティブなワークシートの使用されている全範囲をエクスポートします。特定の範囲に出力を制限するには、目的のセルを一時的なワークブックにコピーし、そのワークブックをエクスポートしてください。

参照

 日本語