วิธีจัดรูปแบบเซลล์ด้วย 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?
- ไม่ต้องใช้ Excel: การจัดรูปแบบทำงานทั้งหมดใน Python บนระบบปฏิบัติการใดก็ได้.
- โมเดลสีที่สอดคล้องกัน: สตริง 8 หลัก AARRGGBB ตัวเดียวครอบคลุมสีฟอนต์และสีเติมด้วยรูปแบบเดียวกัน.
- ชื่อคุณสมบัติที่อ่านง่าย:
bold,italic,underline,strikethrough: ไม่มีis_คำนำหน้าให้จดจำ. - อ็อบเจกต์ฟอนต์ที่ใช้ซ้ำได้: สร้าง
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" |
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.")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 รูปแบบเป็นรูปแบบข้อความธรรมดาหรือข้อความโครงสร้างและไม่บรรจุข้อมูลการจัดรูปแบบ.
แหล่งข้อมูลที่เกี่ยวข้อง:
- Aspose.Cells FOSS for Python: Developer Guide
- การดำเนินการสเปรดชีต
- วิธีโหลดสเปรดชีตใน Python
- วิธีสร้างแผนภูมิใน Python
- API Reference: Font, Fill, Style
- ภาพรวมของผลิตภัณฑ์: สรุปคุณลักษณะและความสามารถ
- บล็อก: แนะนำ Aspose.Cells FOSS: ภาพรวมของไลบรารีและการเริ่มต้นอย่างรวดเร็ว