2017-02-01 2 views
-2

파이썬 2.7 내가 Excel에서 날짜 값 ("2016년 5월 1일은")이며, 적용 서식 사용자 지정 숫자가 셀 읽으려고적용된 숫자 형식의 셀 값 읽기 openpyxl? - REDUX

, openpyxl 2.4.x에서 ("YYYYMM을") 그래서 "201605"로 표시됩니다. 최종 결과는 맞춤 전화 번호 형식이 적용된 후의 가치 (즉, 사용자가 Excel ("201605")에서 보는 내용)입니다. 어떻게 openpyxl을 사용하여 이것을 할 수 있습니까?

참고 : 사용자가 사용자 지정 서식을 변경할 수 있으므로 날짜를 가져 와서 yyyymm으로 다시 포맷 할 수는 없으며 사용자 지정 서식이 적용된 후에 최종 결과가 필요합니다. 어쩌면 openpyxl에서 읽은 셀에 사용자 지정 서식을 적용하는 방법이 있을까요?

나는이이 게시물 ( similar question)과 매우 유사하지만 난 도움을 사전에 내 상황에서

감사를 적용하는 방법을 아주 확실하지 않았다 알고 있습니다.

+0

나는 downvotes 몇 가지를 볼 수 있지만 이유에 대해서는 언급하지 않았다. 그 원인을 고칠 수 있도록 알려주십시오. 고마워. – Sharkbite

답변

0

구현되지 않았습니다. 찾고있는 것은 cell.number_format입니다. 다음보십시오 : 당신이 형식의 cell.value을 필요로하는 시점에서

def pyDateFormat(nf): 
    import re 
    """Convert xlsx cell.number_format to Python date Format.""" 
    #xlsx Format = 'YYYYMMDD', 'YYYY\\-MM\\-DD' 
    #Python Format = '%Y%m%d' 
    nf = re.sub(r'\\',r'',nf,0,re.IGNORECASE) #Remove Escapes 
    nf = re.sub(r'([^Y]*)(Y+)(.*)',r'\1%Y\3',nf,0,re.IGNORECASE) #Change YYYY to %Y 
    nf = re.sub(r'([^M]*)(M+)(.*)',r'\1%m\3',nf,0,re.IGNORECASE) #Change MM to %m 
    nf = re.sub(r'([^D]*)(D+)(.*)',r'\1%d\3',nf,0,re.IGNORECASE) #Change DD to %d 
    return nf 
#end def pyDateFormat 

을 수행

cell = wb.ws['A1'] 
    if cell.is_date: 
    value = cell.value.date().__format__(pyDateFormat(cell.number_format)) 

파이썬으로 테스트 : 3.4.2 - openpyxl : 2.4.1 - LibreOffice와 : 4.3 .3.2