python 으로 excel 표 의 한 열 내용 을 수정 하 는 조작 방법
지금 만약 에 당신 이 해 야 할 일 은 다음 몇 개 월 동안 모든 직원 의 번 호 를 채 우 고 직원 에 게 2000 에서 50000 사이 의 임 의 수 를 이 달의 월급 으로 무 작위 로 생 성 하 는 것 입 니 다.얼마나 받 을 수 있 는 지 는 하늘의 뜻 에 달 려 있 습 니 다.당신 은 자신의 python 능력 을 단련 하기 위해 관련 된 코드 를 쓰기 로 결 정 했 습 니 다.
1 라 이브 러 리 도입
먼저 라 이브 러 리 함 수 를 도입 하고 엑셀 내용 을 수정 하려 면 먼저 openpyxl 라 이브 러 리 가 있어 야 합 니 다.무 작위 수 를 만 들 려 면 random 라 이브 러 리 가 있어 야 합 니 다.
import openpyxl
import random
2 추출 셀우 리 는 먼저 번 호 를 추출 합 니 다.
번 호 는 B 열 입 니 다.
workbook=openpyxl.load_workbook(' .xlsx')
table = workbook['Sheet1']
print(table['B'])
3 추출 목록
그러나 이때 우 리 는 흔히 볼 수 있 는 list 형식 이 아 닌 cell 형식의 데 이 터 를 추출 한 것 을 발견 했다.우 리 는 다음 과 같은 방식 으로 list 형식 을 얻 을 수 있다.
def cell2List(CELL):
LIST=[]
for cell in CELL:
LIST.append(cell.value)
return LIST
IDList=cell2List(table['B'])
print(IDList)
4 리스트 데이터 수정
이제 우 리 는'작업 번호'라 는 몇 글자 의 위 치 를 찾 아야 한다.
def get_location_in_list(x, target):
step = -1
items = list()
for i in range(x.count(target)):
y = x[step + 1:].index(target)
step = step + y + 1
items.append(step)
return items
IDPos=get_location_in_list(IDList, ' ')
print(IDPos)
그 다음 에 우 리 는 맨 앞 에 있 는 직원 의 이름 을 뒤로 복사 해 야 한다.만약 에 우리 가 5 명 이 있다 는 것 을 알 고 작은 제목 이 두 칸 을 차지 하 는 것 을 알 고 있다 고 가정 해 야 한다.
그러면 다음 코드 를 작성 합 니 다:
staffNum=5
for i in range(0,len(IDPos)):
IDList[IDPos[i]+1:IDPos[i]+2+staffNum]=IDList[IDPos[0]+1:IDPos[0]+2+staffNum]
print(IDList)
5 셀 값 수정
이 럴 때 우 리 는 cell 만 부여 하면 된다.
tempi=0
for cell in table['B']:
cell.value=IDList[tempi]
tempi=tempi+1
이때 다음 과 같은 오 류 를 발견 했다.이 때 는 우리 가 합 친 칸 이 있 으 니까.
코드 를 다음 과 같은 형식 으로 바 꾸 면 됩 니 다.
tempi=0
for cell in table['B']:
try:
cell.value=IDList[tempi]
except:
print('')
tempi=tempi+1
6.원래 EXCEL 또는 새 EXCEL 저장주로 뒤의 인 자 를 변경 합 니 다.예 를 들 어 result.xlsx 를 새로 저장 하고 싶 습 니 다.
workbook.save(filename = "result.xlsx")
7.기타 형식 수정(왼쪽 에서 예)만약 당신 이 발견 한다 면,이때 저장 결과 번호 국 에 있 습 니 다.
왼쪽 에 있 고 싶 습 니 다.앞의 코드 를 다음 과 같이 수정 하면 됩 니 다.
tempi=0
for cell in table['B']:
try:
cell.value=IDList[tempi]
cell.alignment = openpyxl.styles.Alignment(horizontal='left', vertical='center')
except:
print('')
tempi=tempi+1
8 무 작위 임금 생 성앞 과 비슷 하고 간단 합 니 다.전체 코드 를 보고 스스로 깨 닫 는 것 을 권장 합 니 다.
9 전체 코드
import openpyxl
import random
def cell2List(CELL):
LIST=[]
for cell in CELL:
LIST.append(cell.value)
return LIST
def get_location_in_list(x, target):
step = -1
items = list()
for i in range(x.count(target)):
y = x[step + 1:].index(target)
step = step + y + 1
items.append(step)
return items
workbook=openpyxl.load_workbook(' .xlsx')
table = workbook['Sheet1']
IDList=cell2List(table['B'])
salaryList=cell2List(table['C'])
IDPos=get_location_in_list(IDList, ' ')
staffNum=5
for i in range(0,len(IDPos)):
IDList[IDPos[i]+1:IDPos[i]+2+staffNum]=IDList[IDPos[0]+1:IDPos[0]+2+staffNum]
for j in range(IDPos[i]+1,IDPos[i]+2+staffNum):
salaryList[j]=1
# tempi=0
# for cell in table['B']:
# cell.value=IDList[tempi]
# tempi=tempi+1
tempi=0
for cell in table['B']:
try:
cell.value=IDList[tempi]
cell.alignment = openpyxl.styles.Alignment(horizontal='left', vertical='center')
except:
print('')
tempi=tempi+1
tempi=0
for cell in table['C']:
try:
if salaryList[tempi]==1:
cell.value=random.randint(2000,50000)
except:
print('')
tempi=tempi+1
workbook.save(filename = "result.xlsx")
효과:이상 은 python 으로 엑셀 표 의 특정한 내용 을 수정 하 는 상세 한 내용 입 니 다.python 으로 엑셀 을 수정 하 는 자 료 는 우리 의 다른 관련 글 을 주목 하 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.