Excel スプレッドシートは、データの整理、分析、表形式での表示に広く利用されています。プログラムから Excel ファイルを操作できるようになると、自動化や他のアプリケーションとの連携が可能になり、大変便利です。特に、新しい Excel ファイルを作成したり、既存のファイルから情報を取得したり、必要に応じてデータを更新・変更する方法を理解しておくと役立ちます。
本記事では、Spire.XLS for Python ライブラリを使用して、Python で Excel ドキュメントを作成・読み取り・更新する方法を紹介します。
Spire.XLS for Python のインストール
この操作には、Spire.XLS for Python と plum-dispatch v1.7.4 が必要です。これらは、Spire.XLS for Python の公式ウェブサイトから手動でダウンロードするか、以下の pip コマンドでインストールできます。
pip install Spire.XLS
Python で Excel ドキュメントを作成する
Spire.XLS for Python は、Excel ドキュメントを作成・編集するためのさまざまなクラスやインターフェースを提供しています。以下は、この記事で使用する主なクラス、プロパティ、およびメソッドの一覧です。
メンバー | 説明 |
Workbook クラス | Excel ブック(ファイル全体)を表します。 |
Workbook.Worksheets.Add() メソッド | 新しいワークシートをブックに追加します。 |
Workbook.SaveToFile() メソッド | ワークブックを Excel ファイルとして保存します。 |
Worksheet クラス | ワークブック内のワークシートを表します。 |
Worksheet.Range プロパティ | ワークシート内の特定のセルまたはセル範囲を取得します。 |
Worksheet.Range.Text プロパティ | セルの文字列データを取得または設定します。 |
Worksheet.Rows プロパティ | ワークシート内のすべての行を取得します。 |
CellRange クラス | セルまたはセル範囲を表します。 |
以下は、Spire.XLS for Python を使用してゼロから Excel ドキュメントを作成する手順です。
- Workbook オブジェクトを作成します。
- Workbook.Worksheets.Add() メソッドでワークシートを追加します。
- Worksheet.Range.Text プロパティを使って特定のセルにデータを書き込みます。
- Workbook.SaveToFile() メソッドを使って、Excel ファイルとして保存します。
- Python
from spire.xls import Workbook, HorizontalAlignType, VerticalAlignType, LineStyleType, ExcelColors, FileFormat
# Workbook オブジェクトを作成します
wb = Workbook()
# 既定のワークシートを削除します
wb.Worksheets.Clear()
# ワークシートを追加し、「社員」と名前を付けます
sheet = wb.Worksheets.Add("社員")
# A1 から G1 のセルを結合します
sheet.Range["A1:G1"].Merge()
# A1 にデータを書き込み、書式を設定します
sheet.Range["A1"].Text = "寰宇自動車会社の社員基本情報"
sheet.Range["A1"].HorizontalAlignment = HorizontalAlignType.Center
sheet.Range["A1"].VerticalAlignment = VerticalAlignType.Center
sheet.Range["A1"].Style.Font.IsBold = True
sheet.Range["A1"].Style.Font.Size = 13
# 1行目の行の高さを設定します
sheet.Rows[0].RowHeight = 30
# 特定のセルにデータを書き込みます
sheet.Range["A2"].Text = "氏名"
sheet.Range["B2"].Text = "性別"
sheet.Range["C2"].Text = "生年月日"
sheet.Range["D2"].Text = "学歴"
sheet.Range["E2"].Text = "連絡先"
sheet.Range["F2"].Text = "職位"
sheet.Range["G2"].Text = "社員ID"
sheet.Range["A3"].Text = "健太"
sheet.Range["B3"].Text = "男性"
sheet.Range["C3"].Text = "1990-02-10"
sheet.Range["D3"].Text = "学士"
sheet.Range["E3"].Text = "24756854"
sheet.Range["F3"].Text = "整備士"
sheet.Range["G3"].Text = "0021"
sheet.Range["A4"].Text = "翔太"
sheet.Range["B4"].Text = "男性"
sheet.Range["C4"].Text = "1985-06-08"
sheet.Range["D4"].Text = "修士"
sheet.Range["E4"].Text = "59863247"
sheet.Range["F4"].Text = "整備士"
sheet.Range["G4"].Text = "0022"
sheet.Range["A5"].Text = "彩香"
sheet.Range["B5"].Text = "女性"
sheet.Range["C5"].Text = "1989-11-25"
sheet.Range["D5"].Text = "学士"
sheet.Range["E5"].Text = "79540352"
sheet.Range["F5"].Text = "営業"
sheet.Range["G5"].Text = "0023"
sheet.Range["A6"].Text = "大輔"
sheet.Range["B6"].Text = "男性"
sheet.Range["C6"].Text = "1988-04-16"
sheet.Range["D6"].Text = "修士"
sheet.Range["E6"].Text = "52014060"
sheet.Range["F6"].Text = "整備士"
sheet.Range["G6"].Text = "0024"
sheet.Range["A7"].Text = "美咲"
sheet.Range["B7"].Text = "女性"
sheet.Range["C7"].Text = "1998-01-21"
sheet.Range["D7"].Text = "学士"
sheet.Range["E7"].Text = "35401489"
sheet.Range["F7"].Text = "人事"
sheet.Range["G7"].Text = "0025"
# 指定範囲の行の高さを設定します
sheet.Range["A2:G7"].RowHeight = 15
# 列幅を設定します
sheet.SetColumnWidth(3, 15)
sheet.SetColumnWidth(4, 21)
sheet.SetColumnWidth(5, 15)
# 指定範囲の罫線スタイルを設定します
sheet.Range["A2:G7"].BorderAround(LineStyleType.Medium)
sheet.Range["A2:G7"].BorderInside(LineStyleType.Thin)
sheet.Range["A2:G2"].BorderAround(LineStyleType.Medium)
sheet.Range["A2:G7"].Borders.KnownColor = ExcelColors.Black
# 使用するすべてのセルにフォント名を設定する
sheet.Range.Style.Font.FontName = "Yu Gothic UI"
# .xlsx ファイルとして保存します
wb.SaveToFile("output/Excelファイルの作成.xlsx", FileFormat.Version2016)
wb.Dispose()
Python で Excel ワークシートからデータを読み取る
Worksheet.Range.Value プロパティを使用すると、セルの数値または文字列の値を文字列として取得できます。ワークシート全体やセル範囲からデータを取得するには、セルをループ処理することで可能です。
以下は、Spire.XLS for Python を使用してワークシートからデータを取得する手順です。
- Workbook オブジェクトを作成します。
- Workbook.LoadFromFile() メソッドで Excel ファイルを読み込みます。
- Workbook.Worksheets[index] プロパティで特定のワークシートを取得します。
- Worksheet.AllocatedRange プロパティで、データが含まれているセル範囲を取得します。
- 行と列をループ処理して各セルにアクセスし、CellRange.Value プロパティで値を取得します。
- Python
from spire.xls import Workbook
# Workbook オブジェクトを作成します
wb = Workbook()
# 既存の Excel ファイルを読み込みます
wb.LoadFromFile("output/Excelファイルの作成.xlsx")
# 最初のワークシートを取得します
sheet = wb.Worksheets[0]
# データが入力されているセル範囲を取得します
locatedRange = sheet.AllocatedRange
# 行を繰り返し処理します
for i in range(len(sheet.Rows)):
# 列を繰り返し処理します
for j in range(len(locatedRange.Rows[i].Columns)):
# 特定のセルのデータを取得して出力します
print(locatedRange[i + 1, j + 1].Value + " ", end='')
print("")
Python で Excel ドキュメントを更新する
特定のセルの値を変更するには、Worksheet.Range.Value プロパティを使って新しい値を代入するだけで構いません。以下は、その手順です。
- Workbook オブジェクトを作成します。
- Workbook.LoadFromFile() メソッドで Excel ファイルを読み込みます。
- Workbook.Worksheets[index] プロパティで編集したいワークシートを取得します。
- Worksheet.Range.Value プロパティを使って、特定のセルの値を変更します。
- Workbook.SaveToFile() メソッドを使用して、変更後の Excel ファイルを保存します。
- Python
from spire.xls import Workbook, ExcelVersion
# Workbook オブジェクトを作成します
wb = Workbook()
# 既存の Excel ファイルを読み込みます
wb.LoadFromFile("output/Excelファイルの作成.xlsx")
# 最初のワークシートを取得します
sheet = wb.Worksheets[0]
# 特定のセルの値を変更します
sheet.Range["A1"].Value = "更新済みの値"
# ファイルとして保存します
wb.SaveToFile("output/Excelファイルの更新.xlsx", ExcelVersion.Version2016)
wb.Dispose()
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。