2014-07-20 2 views
0

필자는 파이썬에서 조금 더 쉽게 파이썬 (3.4)을 수행하는 PHP 프로그래머입니다. 내 스크립트는 .xlsx 파일을 여러 .csv 파일 (시트 당 .csv)로 변환합니다.파이썬은 5 자리 타임 스탬프를 반환합니다.

wb = xlrd.open_workbook(filepath) 

for i in range(0, wb.nsheets): 

    sh = wb.sheet_by_index(i) 
    sheet_name = sh.name 
    sheet_name = sheet_name.replace(" ", "_"); 
    fp = open(sheet_name+'.csv', 'at', encoding='utf8') 
    wr = csv.writer(fp, quoting=csv.QUOTE_ALL) 

    for row_num in range(sh.nrows): 
     wr.writerow(sh.row_values(row_num)) 

    fp.close() 
여기

전체 코드 : https://github.com/xtrimsky/xlsx_to_csv이, 잘 작동

제외하고 내가 예를 들어 보여 엑셀의 날짜 인 필드를 가지고 : 01/01 여기

코드입니다/2009

하지만 최종 CSV에는 39814의 숫자가 들어 있습니다.이 코드는 무엇입니까? 어떻게해야합니까? 01/02/2009는 39815입니다.

유닉스 타임 스탬프를 찾는 데 사용할 수있는 번호입니까? 또는 문제이며 스크립트를 변경해야합니까? "01/01/2009"라는 문자열 만 반환하면 더 안전하다고 느낄 것입니다.

누군가 내가 처리 할 내용을 이해할 수 있도록 도와 줄 수 있습니까?

+0

여기서는 파이썬과 관련이 없습니다. 그것이 내부 Excel 날짜 표현입니다. – jonrsharpe

답변

2

서수는 1899-12-30 이후의 일 수를 계산처럼 2009년 1월 1일에 39,814지도와 2009년 1월 2일에 39,815지도는 다음 보이는 경우

In [57]: DT.date(1899,12,30) + DT.timedelta(days=39814) 
Out[57]: datetime.date(2009, 1, 1) 

참조

,788,345,851 : Why 1899-12-30!?

은 (신기원 이후의 초) 타임 스탬프로 변환 한 후 time.mktime을 timetuple에 datetime.date 개체를 변환 할 timetuple method를 사용하고, 수, 유닉스 타임 스탬프로 엑셀 번호를 변환하려면
+0

좋은 답변 .... –

관련 문제