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)로 설정합니다. 수행 아니 a를 포함 # 접두사.
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 | 기업/브랜드 파란색 |
첫 번째 두 개의 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")모든 네 플래그는 기본값이 False. 동일한 셀에서 자유롭게 결합할 수 있습니다.
단계 5: 단색 배경 채우기 색상 설정
사용 cell.style.fill.set_solid_fill("AARRGGBB") 배경 채우기를 적용합니다. 색상 형식은 글꼴 색상과 동일한 8자리 AARRGGBB 16진수 문자열입니다.
채우기를 완전히 제거하려면, 호출합니다 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") 8 hex digits with no prefix: "FFFF0000".또는 6자리 RGB 문자열은 예상 색상을 만들지 못합니다. 해당 속성은 정확히 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().
루프에서 셀 범위에 동일한 글꼴 스타일을 적용할 수 있나요?
예. 셀 주소를 반복하고 각 셀에 동일한 속성을 설정합니다. 만약 당신이 사용하는 경우 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 포맷은 일반 텍스트 또는 구조화된 텍스트 포맷이며 스타일 정보를 포함하지 않습니다.
관련 자료: