Python 은 이렇게 놀 수 있 습 니 다.30 줄 코드 로 엑셀 에서 개인 당직 표를 추출 할 수 있 습 니 다.

찾기 동작
1.엑셀 모듈 xlrd,xlwt,xlutils 는 각각 엑셀 파일 의 읽 기,쓰기,읽 기,쓰기 변환 작업 을 책임 집 니 다!
2.openpyxl 은 엑셀 파일 을 읽 고 쓸 수 있 습 니 다!
3.pandas 는 엑셀 파일 을 읽 고 쓸 수 있 습 니 다!
2.openpyxl 모듈 설치

pip install openpyxl
3.당직 표 에서 자신의 정 보 를 읽 고 선별 합 니 다.
1.모든 당직 정 보 를 읽 기;
2.일반적인 상황 에서 엑셀 은 일부 표 가 비어 있 기 때문에 모든 None 의 엑셀 줄 문자열 데 이 터 를 저장 합 니 다.
3.모든 당직 데 이 터 를 순환 하여 현재 줄 데 이 터 를 데이터 문자열 로 만 듭 니 다.
4.현재 당직 정보 문자열 에 자신의 이름 이 있 는 지 판단 하기;
5.자신의 정 보 를 포함 하 는 데이터 의 핵심 정보(당직 시간,이름)를 저장 합 니 다.
6.현재 문자열 에 None 데이터 가 모두 포함 되 어 있 는 지 판단 합 니 다.
7.당직 표 에 비 어 있 는 줄 이 없 기 때문에 None 을 찾 으 면 바로 순환 에서 벗 어 납 니 다.

dutys = []
  book = openpyxl.load_workbook('duty.xlsx',data_only=True)
  sheet = book.active
  all_data = book.get_sheet_by_name("    ")
  none_str = ''.join([str(None).ljust(20) for c in range(1,all_data.max_column+1)])
  for r in range(1,all_data.max_row + 1):
    cur_str = ''.join([str(all_data.cell(row=r,column=c).value).ljust(20) for c in range(1,all_data.max_column+1)])
    if cur_str.find("***") >= 0:
      dutys.append({
        "date": all_data.cell(row=r,column=2).value,
        "name": all_data.cell(row=r,column=3).value
      })
    elif cur_str.find(none_str) >= 0:
      break
  return dutys
4.자신의 당직 정보 표를 만 듭 니 다.
1.당직 정보 표를 만 드 는 엑셀;
2.자신의 당직 정 보 를 순환 시킨다.
3.만 든 표 에 정 보 를 입력 합 니 다.

 book = openpyxl.Workbook()
  sheet = book.active
  for i in range(len(dutys)):
    sheet.cell(row=1 + i, column=1).value = dutys[i].get("name")
    sheet.cell(row=1 + i, column=2).value = f'{dutys[i].get("date")}'
  book.save('my_duty.xlsx')
5.모든 코드

#!/usr/bin/env python
"""
@Author  :Rattenking
@Date    :2021/06/02 10:19
@CSDN	 :https://blog.csdn.net/m0_38082783
"""

import openpyxl
import time

def get_my_duty_date():
  dutys = []
  book = openpyxl.load_workbook('duty.xlsx',data_only=True)
  sheet = book.active
  all_data = book.get_sheet_by_name("    ")
  none_str = ''.join([str(None).ljust(20) for c in range(1,all_data.max_column+1)])
  for r in range(1,all_data.max_row + 1):
    cur_str = ''.join([str(all_data.cell(row=r,column=c).value).ljust(20) for c in range(1,all_data.max_column+1)])
    if cur_str.find("***") >= 0:
      dutys.append({
        "date": all_data.cell(row=r,column=2).value,
        "name": all_data.cell(row=r,column=3).value
      })
    elif cur_str.find(none_str) >= 0:
      break
  return dutys

def create_my_duty_list(dutys):
  book = openpyxl.Workbook()
  sheet = book.active
  for i in range(len(dutys)):
    sheet.cell(row=1 + i, column=1).value = dutys[i].get("name")
    sheet.cell(row=1 + i, column=2).value = f'{dutys[i].get("date")}'
  book.save('my_duty.xlsx')

if __name__ == "__main__":
  start_time = int(round(time.time() * 1000))
  dutys = get_my_duty_date()
  create_my_duty_list(dutys)
  end_time = int(round(time.time() * 1000))
  print(f'         :{end_time - start_time}ms')
6.집행 결과
在这里插入图片描述
7.총화
openpyxl 모듈 의 각 기능 을 잘 알 고 엑셀 에 대한 조작 을 편리 하 게 합 니 다.자신 이 관심 을 가 지 는 관건 적 인 정 보 를 선별 하여 표를 다시 작성 합 니 다.다음 편 은 당직 시간 에 따라 python 으로 자신의 위 챗 에 자동 으로 메 시 지 를 보 내 힌트 를 드 립 니 다!
파 이 썬 이 이렇게 놀 수 있 는 것 은 30 줄 코드 로 엑셀 에서 개인 당직 표를 추출 하 는 글 입 니 다.더 많은 파 이 썬 이 엑셀 에서 개인 당직 표 내용 을 추출 할 수 있 습 니 다.예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기