단어가 포함되거나 특정 문자열로 끝나는 셀이 특정 색상으로 배경을 채워서 포맷되도록 스프레드 시트 (xls 또는 xlsx)를 포맷하고 싶습니다.조건부로 파이썬을 사용하여 Excel에서 텍스트 문자열 서식 지정
예를 들어, 셀에 'deleted'라는 단어가 포함되어 있으면 검정색으로 채우고 흰색으로 칠하십시오. 셀이 '.pf'로 끝나면 셀을 빨간색으로 페인트합니다. 이 output.xls에 input.xls에서 값을 복사 않지만
import xlrd
import xlutils.copy
inBook = xlrd.open_workbook('input.xls', formatting_info=True)
outBook = xlutils.copy.copy(inBook)
def _getOutCell(outSheet, colIndex, rowIndex):
""" HACK: Extract the internal xlwt cell representation. """
row = outSheet._Worksheet__rows.get(rowIndex)
if not row: return None
cell = row._Row__cells.get(colIndex)
return cell
def setOutCell(outSheet, col, row, value):
""" Change cell value without changing formatting. """
# HACK to retain cell style.
previousCell = _getOutCell(outSheet, col, row)
# END HACK, PART I
outSheet.write(row, col, value)
# HACK, PART II
if previousCell:
newCell = _getOutCell(outSheet, col, row)
if newCell:
newCell.xf_idx = previousCell.xf_idx
# END HACK
outSheet = outBook.get_sheet(0)
setOutCell(outSheet, 5, 5, 'Test')
outBook.save('output.xls')
, 이것은 서식을 전송하지 않는 것합니다 (:
나는 다음과 같은 제안 몇 년 전 비슷한 질문을 발견 input.xls의 테스트 값은 output.xls를 열 때 더 이상 형식화되지 않으며 Excel의 "규칙 관리"아래에 조건부 서식 규칙이 없으며 숫자 값에 대한 명령문이 작동하는 것처럼 보일 수도 있지만 다시 I 특정 문자열이 들어있는 셀을 포맷하는 방법을 찾고 있습니다. 감사합니다.
파일을 현재 위치에서 변경하려고 시도 했습니까? 스크립트를 실행하기 전에 파일의 백업을 만들 수 있습니다. – Alfe
제 생각에는 편집을 할 수 있다고 생각하지 않습니다. 나는 xlutils가 단지 당신이 사본을 복사하고 수정할 수 있다고 이해한다. win32com이이 작업을 수행 할 수 있다면 시도해 볼 수있는 멋진 방향이 될 수 있지만 그 사실을 인식하지 못합니다. win32com은 또한이 스크립트가 excel (Linux)이 설치되지 않은 컴퓨터에서 작동하기를 원하기 때문에 필자가 선호하는 전술이 아닙니다. – user2363458