Python で Aspose.Cells FOSS を使用してセルをスタイル設定する方法
Aspose.Cells FOSS for Python 個々のセルにフォントスタイルと背景塗りつぶしを適用できるようにします cell.style.font と cell.style.fill APIです。色は次のように表現されます 8-digit AARRGGBB hex strings; 例えば "FFFF0000" 不透明な赤の場合、プレフィックスなしで # プレフィックスです。すべてのスタイリングは純粋な Python で行われ、Microsoft Excel や外部のレンダリングライブラリへの依存はありません。.
なぜ Aspose.Cells FOSS でセルをスタイル設定するのか??
- Excelは不要: フォーマットは任意のOS上で完全に Python で実行されます。.
- 一貫したカラーモデル: 単一の8桁AARRGGBB文字列で、フォントカラーと塗りつぶしカラーを同じ形式でカバーします。.
- 読みやすいプロパティ名:
bold,italic,underline,strikethrough: いいえis_覚えておくためのプレフィックス。. - 再利用可能なフォントオブジェクト: 作成する
Fontインスタンスを一度作成し、複数のセルに適用して一貫したブランディングを実現します。.
ステップバイステップ ガイド
ステップ1:Python向けAspose.CellsのFOSSをインストールする
pip install aspose-cells-foss追加のシステムパッケージは必要ありません。必要なクラスは以下からインポートしてください aspose.cells_foss:
from aspose.cells_foss import Workbook, Cell, Font, SaveFormatステップ 2: フォント名とサイズを設定する
セルにアクセスするには ws.cells["address"] に書き込むには cell.style.font.name と cell.style.font.size.
from aspose.cells_foss import Workbook
workbook = Workbook()
ws = workbook.worksheets[0]
ws.cells["A1"].value = "Styled Header"
cell = ws.cells["A1"]
cell.style.font.name = "Arial"
cell.style.font.size = 14
workbook.save("styled.xlsx")デフォルトのフォントは Calibri 11pt. ファイルが開かれるシステムで利用可能なフォント名であれば使用できます;インストールされていないフォントを指定してもエラーにはなりませんが、ファイルを開く際に代替フォントで表示される可能性があります。.
ステップ 3: AARRGGBB 16進文字列でフォントカラーを設定する
フォントの色は 8-digit hexadecimal string で AARRGGBB 順序(Alpha、Red、Green、Blue)で設定します。してください しないで 含める # プレフィックス。.
from aspose.cells_foss import Workbook
workbook = Workbook()
ws = workbook.worksheets[0]
ws.cells["A1"].value = "Red text"
ws.cells["A1"].style.font.color = "FFFF0000" # opaque red
ws.cells["A2"].value = "Blue text"
ws.cells["A2"].style.font.color = "FF0000FF" # opaque blue
ws.cells["A3"].value = "Green text"
ws.cells["A3"].style.font.color = "FF00FF00" # opaque green
workbook.save("colored_text.xlsx")一般的な AARRGGBB カラーリファレンス::
| 色 | AARRGGBB文字列 | メモ |
|---|---|---|
| 黒 | FF000000 | デフォルトのフォント色 |
| 白 | FFFFFFFF | 暗い背景で使用 |
| 赤 | FFFF0000 | 警告やハイライトテキスト |
| 青 | FF0000FF | リンクや強調 |
| 緑 | FF00FF00 | 正の値または成功 |
| オレンジ | FFFF8000 | 警告テキスト |
| グレー | FF808080 | 控えめまたは無効化されたテキスト |
| ネイビー | FF1E64C8 | 企業/ブランドブルー |
最初の2つの16進数桁はアルファチャンネルです。使用 FF 完全に不透明にするには。以下の値は FF アルファブレンドをサポートするレンダラーで、半透明の結果を生成します。.
ステップ 4: 太字、斜体、下線、取り消し線を適用する
各属性をブール値として直接設定します。プロパティ名は bold, italic, underline,、および strikethrough;;実行 しない 使用する is_bold または is_italic (それらの名前はFOSS APIに存在せず、エラーが発生します AttributeError).
from aspose.cells_foss import Workbook
workbook = Workbook()
ws = workbook.worksheets[0]
ws.cells["A1"].value = "Bold"
ws.cells["A1"].style.font.bold = True
ws.cells["A2"].value = "Italic"
ws.cells["A2"].style.font.italic = True
ws.cells["A3"].value = "Underline"
ws.cells["A3"].style.font.underline = True
ws.cells["A4"].value = "Strikethrough"
ws.cells["A4"].style.font.strikethrough = True
ws.cells["A5"].value = "Bold + Italic"
ws.cells["A5"].style.font.bold = True
ws.cells["A5"].style.font.italic = True
workbook.save("font_styles.xlsx")4つのフラグはすべてデフォルトで False.。同じセル内で自由に組み合わせることができます。.
ステップ 5: 単色の背景塗りつぶし色を設定する
使用 cell.style.fill.set_solid_fill("AARRGGBB") 背景塗りつぶしを適用するには。色の形式はフォントカラーと同じ8桁のAARRGGBB十六進文字列です。.
塗りつぶしを完全に削除するには、次を呼び出します cell.style.fill.set_no_fill().
from aspose.cells_foss import Workbook
workbook = Workbook()
ws = workbook.worksheets[0]
ws.cells["A1"].value = "Navy background"
ws.cells["A1"].style.fill.set_solid_fill("FF1E64C8") # opaque navy blue
ws.cells["A2"].value = "Light yellow background"
ws.cells["A2"].style.fill.set_solid_fill("FFFFFFCC") # pale yellow
ws.cells["A3"].value = "No fill"
ws.cells["A3"].style.fill.set_no_fill() # remove any fill
workbook.save("cell_fills.xlsx")set_solid_fill() と set_no_fill() は相互に排他的です。同じセルで一方を呼び出すと、もう一方が上書きされます。.
ステップ 6: 1 つのセルに複数のスタイルを組み合わせる
同じセル参照に対して任意の数のスタイルプロパティをチェーンできます。保存前に設定できるスタイル属性の数に制限はありません。.
from aspose.cells_foss import Workbook
workbook = Workbook()
ws = workbook.worksheets[0]
ws.cells["B2"].value = "Branded Header"
cell = ws.cells["B2"]
##Font
cell.style.font.name = "Arial"
cell.style.font.size = 16
cell.style.font.bold = True
cell.style.font.color = "FFFFFFFF" # white text
##Background
cell.style.fill.set_solid_fill("FF1E64C8") # navy fill
workbook.save("branded_header.xlsx")
print("Branded header cell saved.")これにより、ネイビーの背景に白色で太字、16pt の Arial ラベルが作成されます。これは列ヘッダーの一般的なパターンです。.
ステップ 7: 再利用可能なスタイルのために Font コンストラクタを使用する
この Font クラスはすべてのプロパティを一度の呼び出しでインスタンス化でき、その後複数のセルに割り当てることができます。多くのセルに同じプロパティ割り当てを繰り返すことなく、一貫した社内スタイルを適用したい場合に便利です。.
from aspose.cells_foss import Workbook, Font
workbook = Workbook()
ws = workbook.worksheets[0]
##Define a reusable heading font
heading_font = Font(
name="Arial",
size=14,
color="FF1E64C8", # navy
bold=True,
italic=False,
underline=False,
strikethrough=False
)
##Define a reusable body font
body_font = Font(
name="Calibri",
size=11,
color="FF000000", # black (default)
bold=False,
italic=False,
underline=False,
strikethrough=False
)
##Apply heading font to header row
headers = ["Product", "SKU", "Price", "Stock"]
for col, header in enumerate(headers):
addr = f"{chr(65 + col)}1"
ws.cells[addr].value = header
ws.cells[addr].style.font = heading_font
ws.cells[addr].style.fill.set_solid_fill("FFE8EFF9") # light blue tint
##Apply body font to data rows
data = [
("Widget A", "WGT-001", 9.99, 150),
("Widget B", "WGT-002", 14.99, 87),
("Widget C", "WGT-003", 4.49, 320),
]
for row_idx, (name, sku, price, stock) in enumerate(data, start=2):
ws.cells[f"A{row_idx}"].value = name
ws.cells[f"B{row_idx}"].value = sku
ws.cells[f"C{row_idx}"].value = price
ws.cells[f"D{row_idx}"].value = stock
for col in "ABCD":
ws.cells[f"{col}{row_idx}"].style.font = body_font
workbook.save("product_table.xlsx")
print("Product table with reusable fonts saved.")Font コンストラクタのデフォルト値 (すべてのパラメータはオプションです)::
| パラメータ | デフォルト |
|---|---|
name | "Calibri" |
size | 11 |
color | "FF000000" |
bold | False |
italic | False |
underline | False |
strikethrough | False |
完全な動作例
以下の自己完結型スクリプトは、スタイルが適用されたヘッダー行、色付けされたデータ行、そして上記ですべてのスタイリング API を示すサマリーセルを持つワークブックを作成します::
from aspose.cells_foss import Workbook, Cell, Font, SaveFormat
workbook = Workbook()
ws = workbook.worksheets[0]
ws.name = "Sales Report"
##--- Header row (bold, white text on navy background) ---
headers = ["Region", "Q1", "Q2", "Q3", "Q4", "Total"]
for col, text in enumerate(headers):
addr = f"{chr(65 + col)}1"
ws.cells[addr].value = text
ws.cells[addr].style.font.name = "Arial"
ws.cells[addr].style.font.size = 12
ws.cells[addr].style.font.bold = True
ws.cells[addr].style.font.color = "FFFFFFFF" # white
ws.cells[addr].style.fill.set_solid_fill("FF1E64C8") # navy
##--- Data rows ---
data = [
("North", 42000, 47500, 53000, 61000),
("South", 31000, 28500, 35000, 39000),
("East", 55000, 62000, 58000, 71000),
("West", 27000, 30000, 33000, 41000),
]
for row_idx, (region, q1, q2, q3, q4) in enumerate(data, start=2):
ws.cells[f"A{row_idx}"].value = region
ws.cells[f"B{row_idx}"].value = q1
ws.cells[f"C{row_idx}"].value = q2
ws.cells[f"D{row_idx}"].value = q3
ws.cells[f"E{row_idx}"].value = q4
# Total formula
ws.cells[f"F{row_idx}"] = Cell(None, f"=SUM(B{row_idx}:E{row_idx})")
# Alternate row shading
if row_idx % 2 == 0:
for col in "ABCDEF":
ws.cells[f"{col}{row_idx}"].style.fill.set_solid_fill("FFE8EFF9")
##--- Italic note in a footer cell ---
ws.cells["A7"].value = "All values in USD"
ws.cells["A7"].style.font.italic = True
ws.cells["A7"].style.font.color = "FF808080" # gray
ws.cells["A7"].style.font.size = 9
##--- Strikethrough on a deprecated label ---
ws.cells["A8"].value = "Old metric (deprecated)"
ws.cells["A8"].style.font.strikethrough = True
ws.cells["A8"].style.font.color = "FF808080"
workbook.save("sales_report_styled.xlsx", SaveFormat.XLSX)
print("Styled sales report saved.")よくある問題
色形式が間違っています: 使用している #RRGGBB 代わりに AARRGGBB
先頭の # (例:. "#FF0000") または6桁のRGB文字列は期待通りの色を生成しません。このプロパティは正確に 8 hex digits with no prefix: "FFFF0000". 最初の2桁はアルファチャンネルです; 使用 FF 完全に不透明にするために。.
AttributeError: 'Font' object has no attribute 'is_bold'
FOSS APIは使用します bold, italic, underline,、そして strikethrough プロパティ名として。 is_bold / is_italic 命名規則は別のライブラリに属しており、こちらには存在しません。任意のものを置き換えて is_bold 参照を bold.
保存後にスタイル変更が反映されない
セルオブジェクトにスタイルプロパティを設定してください 前に 呼び出す workbook.save().。保存呼び出しの後にセルのプロパティを設定しても、すでに書き込まれたファイルには影響しません。変数を再利用する場合は cell 変数が正しいセルアドレスを指していることを確認してください。.
同じセルの塗りつぶしとフォントが視覚的に競合する
API の競合はありません。常に両方を設定できます cell.style.font.color と cell.style.fill.set_solid_fill() 独立して。テキストの色が背景色に対して十分なコントラストを持つことを確認してください。白いテキスト(FFFFFFFF)は、ネイビーなどの暗い塗りつぶし(FF1E64C8)は信頼できる組み合わせです。.
よくある質問
セルの背景塗りつぶしを削除して、塗りつぶしなしの状態に戻すにはどうすればよいですか??
呼び出す cell.style.fill.set_no_fill().。これにより、セルに以前設定された単色の塗りつぶしがすべて削除されます。.
セルをデフォルトフォント(Calibri 11pt 黒)にリセットするにはどうすればよいですか??
デフォルト値を明示的に再割り当てします:
cell.style.font.name = "Calibri"
cell.style.font.size = 11
cell.style.font.color = "FF000000"
cell.style.font.bold = False
cell.style.font.italic = False
cell.style.font.underline = False
cell.style.font.strikethrough = Falseあるいは、次を作成します Font() 引数なし(すべてデフォルト)のインスタンスを作成し、割り当てます:: cell.style.font = Font().
ループ内でセルの範囲に同じフォントスタイルを適用できますか??
はい。セルのアドレスを反復処理し、各セルに同じプロパティを設定します。If you use the Font コンストラクタを使用して共有 Font オブジェクトを、各セルに with ws.cells[addr].style.font = my_font.
スタイリングはセルの値や数式に影響しますか??
いいえ。スタイリングは純粋に視覚的なメタデータです。. cell.style.font および cell.style.fill 触れないでください .value または .formula.
どの保存形式がスタイルを保持しますか??
スタイルは保存時に完全に保持されます SaveFormat.XLSX.。 SaveFormat.CSV, SaveFormat.TSV, SaveFormat.JSON,、そして SaveFormat.MARKDOWN フォーマットはプレーンテキストまたは構造化テキスト形式であり、スタイリング情報を含みません。.
関連リソース: