다음을 시도하십시오. 이 xls
스프레드 시트 읽기 및 쓰기 위해 xlrd
및 xlwt
라이브러리를 사용합니다.에 걸릴 꽤 많은이 파이썬 당신이 익숙하지 않은 경우, 불행하게도
import xlrd
import xlwt
wb_in = xlrd.open_workbook(r'input.xls')
sheet_name = wb_in.sheet_names()[0]
ws_in = wb_in.sheet_by_name(sheet_name)
wb_out = xlwt.Workbook()
ws_out = wb_out.add_sheet(sheet_name) # Use the same sheet name
row_out = 0
for row_in in range(ws_in.nrows):
row = ws_in.row_values(row_in)
if isinstance(row[2], float):
req_spec = str(int(row[2]))
else:
req_spec = row[2]
req_range = req_spec.split('-')
req_enum = req_spec.split(',')
if len(req_range) > 1: # e.g. 10010-10040-10
for value in range(int(str(req_range[0])), int(str(req_range[1])) + 1, int(str(req_range[2]))):
ws_out.write(row_out, 0, row[0])
ws_out.write(row_out, 1, row[1])
ws_out.write(row_out, 2, str(value))
row_out += 1
elif len(req_enum) > 1: # e.g. 1010,1020
for value in req_enum:
ws_out.write(row_out, 0, row[0])
ws_out.write(row_out, 1, row[1])
ws_out.write(row_out, 2, value)
row_out += 1
else: # e.g. 10100
ws_out.write(row_out, 0, row[0])
ws_out.write(row_out, 1, row[1])
ws_out.write(row_out, 2, req_spec)
row_out += 1
wb_out.save('output.xls')
을 스크립트는 입력 통합 문서를 작성하여 작동
을 및 출력 통합 문서. 입력의 각 행에 대해 항상 3 개의 열이 있고 세 번째 열에는 세 가지 지정 유형 중 하나가 들어 있다고 가정합니다. -
또는 ,
이 있는지 여부에 따라 사용중인 항목을 결정합니다. 그런 다음이 범위를 기반으로 출력에 행을 씁니다.
파일을 읽을 때 xlrd
은 셀의 형식을 추측하려고합니다. 대부분의 항목에 대해 문자열 형식을 추측하지만 때로는 실수로 부동 소수점 숫자를 추측합니다. 스크립트는이를 테스트하고 일관성을 위해 문자열로 변환합니다. 또한 xlrd
은 유니 코드 u"xxx"
형식을 사용하여 문자열을 저장합니다. 필요한 범위를 계산할 수 있으려면 숫자로 변환해야합니다.
문자 "-"를 구분으로 사용하여 "10010-10040-10"("initNumber-FinalNumber-Increment") 값을 구분해야합니다. 그런 다음 증분이 "증가"가되고 "initNumber"에서 시작하여 "FinalNumber"에서 끝나는 for 루프 (또는 비슷한)를 수행 할 수 있습니다. 귀하의 사이클 안에서 Ex "+ ExerationNumber를 연결하여 Ex1, Ex2, ...를 얻으십시오. 3 번째 열의 경우"initNumber "에서 시작하여 매 루프마다"Increment "를 추가하는 변수를 가질 수 있습니다. – luizfvpereira
오래된'xls' 파일을 다루고 있습니까? 또는 최신'xlsx' 파일? 이 라이브러리는 이전 형식으로 작동하도록 설계되었습니다. –
안녕 마틴 .. 입력 파일로 새 xlsx 파일을 사용했습니다. xlrd가 함께 작동합니다. 출력 파일은 이전 형식의 xls 파일로 나왔습니다. –