Cell OpenPyX에 배경색 추가l
코드가 "존재"일 때 셀에서 녹색 배경을, "부재"일 때 셀에서 빨간색 배경을 나타내는 위치로 만들려고 합니다.여기 제 코드가 있습니다.
ws1.cell(column=1, row=t, value="%s" % blue_student_list)
if (student_check(i)):
ws1.cell(column=2, row=t, value="%s" % "Present")
else:
ws1.cell(column=2, row=t, value="%s" % "Absent")
이 코드는 완벽하게 작동하는데, 셀 뒤에 배경색을 어떻게 추가할 수 있는지 궁금합니다.
와 함께openpyxl 2.5.3위의 코드가 작동하지 않습니다.
시도 후 다음 코드가 작동했습니다.
from openpyxl.styles import PatternFill
sheet['A1'].fill = PatternFill(start_color="FFC7CE", end_color="FFC7CE", fill_type = "solid")
설명서에서 다음을 참조하십시오.
from openpyxl.styles import PatternFill
sheet['A1'].fill = PatternFill(bgColor="FFC7CE", fill_type = "solid")
@Charlie Clark(openpyxl의 공동 저자)가 제안하는 것처럼, 조건부 포맷이 더 나은 방법일 수 있습니다.공식 문서에서 더 많은 정보
배경색을 변경하려면 최신 버전에서 키워드bgcolor작동하지 않는 것 같습니다(나의 경우, 셀 색상은 검은색으로 끝납니다).
대신 다음을 사용할 수 있습니다.start_color또는fgColor예를 들어, 두 솔루션 모두 작동합니다.
from openpyxl.styles import PatternFill
from openpyxl.styles.colors import BLUE
sheet['A1'].fill = PatternFill(start_color="000000FF", fill_type = "solid")
sheet['A1'].fill = PatternFill(fgColor=BLUE, fill_type = "solid")
이것은 openpyxl V 2.6 이상용입니다.
from openpyxl.styles import PatternFill
for col_range in range(1, 12):
cell_title = sheet.cell(1, col_range)
cell_title.fill = PatternFill(start_color="8a2be2", end_color="8a2be2", fill_type="solid")
그러면 A1에서 K1까지의 셀이 색상으로 표시됩니다.
셀의 배경색을 복사하는 데 큰 어려움을 겪었습니다(한 책의 탭에서 다른 책의 탭으로...).
여러 번의 해결 방법을 시도한 결과, 다음과 같은 작업이 가능했습니다.
from openpyxl.styles import PatternFill
from openpyxl.styles.colors import COLOR_INDEX
from copy import copy as shallow_copy, deepcopy as deep_copy
# .
# .
# .
if from_cell.has_style:
if isinstance(from_cell.fill.start_color.index, int):
start_color=COLOR_INDEX[from_cell.fill.start_color.index]
else: # _sometimes_ a string...
start_color=from_cell.fill.start_color.index
end_color=start_color
to_cell.fill=shallow_copy(PatternFill(fill_type=from_cell.fill.fill_type,
start_color=start_color,
end_color=end_color,
patternType=from_cell.fill.patternType
)
)
참고로: 오픈파이xl은 훌륭한 제품입니다. 저는 많은 개발자들이 그것을 사용하는 것이 무엇이 가능한지 깨닫지 못하고 있다고 생각합니다.저는 그 프로젝트를 지원할 것입니다.
아마도 많은 개발자들이 안티 오픈 소스라고 잘못 생각하는 것 같습니다. 하지만 xlsx 문서도 LibreOffice에 의해 렌더링됩니다.
언급URL : https://stackoverflow.com/questions/35918504/adding-a-background-color-to-cell-openpyxl
'programing' 카테고리의 다른 글
| Vuex 스토어에서 Vue.js 자동 해제 경고 (0) | 2023.06.22 |
|---|---|
| VB.NET의 임의 정수 (0) | 2023.06.17 |
| 최고의 OAuth2 C# 라이브러리는 무엇입니까? (0) | 2023.06.17 |
| 링크에서 파란색 밑줄 제거 (0) | 2023.06.17 |
| C#: Excel 셀에 액세스하는 방법은 무엇입니까? (0) | 2023.06.17 |