วิธีจัดรูปแบบเซลล์ด้วย Aspose.Cells FOSS ใน Python

วิธีจัดรูปแบบเซลล์ด้วย Aspose.Cells FOSS ใน Python

Aspose.Cells FOSS for Python ทำให้คุณสามารถใช้สไตล์ฟอนต์และการเติมพื้นหลังกับเซลล์แต่ละเซลล์โดยใช้ the cell.style.font และ cell.style.fill APIs. สีจะถูกระบุเป็น 8-digit AARRGGBB hex strings; ตัวอย่างเช่น "FFFF0000" สำหรับสีแดงทึบ, โดยไม่มี # คำนำหน้า. การจัดรูปแบบทั้งหมดทำใน pure Python แท้โดยไม่มีการพึ่งพา Microsoft Excel หรือไลบรารีการเรนเดอร์ภายนอกใดๆ.

ทำไมต้องจัดรูปแบบเซลล์ด้วย Aspose.Cells FOSS?

  1. ไม่ต้องใช้ Excel: การจัดรูปแบบทำงานทั้งหมดใน Python บนระบบปฏิบัติการใดก็ได้.
  2. โมเดลสีที่สอดคล้องกัน: สตริง 8 หลัก AARRGGBB ตัวเดียวครอบคลุมสีฟอนต์และสีเติมด้วยรูปแบบเดียวกัน.
  3. ชื่อคุณสมบัติที่อ่านง่าย: bold, italic, underline, strikethrough: ไม่มี is_ คำนำหน้าให้จดจำ.
  4. อ็อบเจกต์ฟอนต์ที่ใช้ซ้ำได้: สร้าง Font อินสแตนซ์หนึ่งครั้งและนำไปใช้กับหลายเซลล์เพื่อการสร้างแบรนด์ที่สอดคล้องกัน.

คู่มือแบบขั้นตอนต่อขั้นตอน

ขั้นตอนที่ 1: ติดตั้ง Aspose.Cells FOSS สำหรับ Python

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

สีแบบอักษรถูกกำหนดด้วย 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สีน้ำเงินขององค์กร/แบรนด์

สองหลักฐานสิบหกตัวแรกเป็นช่องอัลฟา ใช้ FF สำหรับความทึบเต็มที่ ค่าที่ต่ำกว่า FF สร้างผลลัพธ์กึ่งโปร่งใสในเรนเดอร์ที่รองรับการผสมอัลฟา.


ขั้นตอนที่ 4: ใช้ Bold, Italic, Underline, และ Strikethrough

ตั้งค่าแต่ละแอตทริบิวต์โดยตรงเป็นบูลีน ชื่อคุณสมบัติคือ 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")

แฟล็กสี่ตัวทั้งหมดมีค่าเริ่มต้นเป็น 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: รวมหลายสไตล์ในเซลล์เดียว

คุณสามารถต่อเชื่อมคุณสมบัติสไตล์ได้จำนวนเท่าใดก็ได้บนการอ้างอิงเซลล์เดียวกัน ไม่มีขีดจำกัดจำนวนแอตทริบิวต์สไตล์ที่ตั้งก่อนบันทึก.

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"
size11
color"FF000000"
boldFalse
italicFalse
underlineFalse
strikethroughFalse

ตัวอย่างการทำงานที่สมบูรณ์

สคริปต์อิสระต่อไปนี้สร้างเวิร์กบุ๊กที่มีแถวหัวเรื่องที่มีสไตล์, แถวข้อมูลที่มีสี, และเซลล์สรุปที่แสดง 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.")

Common Issues

รูปแบบสีไม่ถูกต้อง: ใช้ #RRGGBB แทนที่ AARRGGBB

อักขระนำหน้า # (เช่น. "#FF0000") หรือสตริง RGB 6 หลักจะไม่ให้สีที่คาดหวัง คุณสมบัตินี้ต้องการอย่างแม่นยำ 8 hex digits with no prefix: "FFFF0000". ตัวเลขสองหลักแรกเป็นช่องอัลฟา; ใช้ FF สำหรับความทึบเต็มที่.

AttributeError: 'Font' object has no attribute 'is_bold'

API ของ FOSS ใช้ 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().

ฉันสามารถใช้สไตล์ฟอนต์เดียวกันกับช่วงของเซลล์ในลูปได้หรือไม่?

ใช่. วนซ้ำที่ที่อยู่ของเซลล์และตั้งค่าคุณสมบัติเหมือนกันในแต่ละเซลล์ หากคุณใช้ Font คอนสตรัคเตอร์เพื่อสร้างอ็อบเจกต์ที่ใช้ร่วมกัน Font อ็อบเจกต์, กำหนดให้กับแต่ละเซลล์ด้วย 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 รูปแบบเป็นรูปแบบข้อความธรรมดาหรือข้อความโครงสร้างและไม่บรรจุข้อมูลการจัดรูปแบบ.


แหล่งข้อมูลที่เกี่ยวข้อง:

 ภาษาไทย