2025. 2. 2. 20:35ㆍIT
파워포인트 편지봉투에 출력할 엑셀은 초반에 살펴본 금융결제원에서 다운로드 받은 codefilex.xls을 사용하겠습니다. 전국 은행코드 및 은행이름과 주소를 담고 있으며 개수는 해외 지사의 정보까지 있어 무려 28,682개 입니다. 앞에서 살펴본 바와 비슷합니다.
이 엑셀 파일에서 우리가 필요한 정보는
- 은행명 + 점포명 + “귀하”
- 우편번호는 다섯자리이어야 하고 파워포인트에 다섯칸이 있으므로 각각 나누어야 함
- 주소
입니다.
036_excelAddr.py
openpyxl 패키지를 사용하는 프로그램입니다. load_workbook() 함수를 이용해서 엑셀 파일 codefilex.xlsx를 열었습니다. 그리고 wb[‘codefilex’]와 같은 방법으로 워크시트를 받아옵니다.
출력할 변수 name, postcode와 addr을 선언해 줬습니다. 이 변수들은 다음에 올 for문에서 채워지게 됩니다. 3만여개나 되는 파일을 모두 출력할 수는 있으나 파워포인트로 페이지를 만든다고 했을 때, 무려 3만 페이지나 되기 때문에 컴퓨터 성능 뿐만 아니라 저장소도 많이 차지하게 될 것이기 때문에 이번 테스트 코드에서 100번째 줄까지만 출력하도록 설정을 했습니다. 그리고 for문의 range()에서 2부터 시작을 하도록 했습니다. 첫번째 줄은 주소록 테이블의 제목이기 때문입니다.
name에는 두번째와 세번째의 은행명과 점포명에 “귀하”를 더했고, postcode는 6번째 셀의 값입니다. 마지막 7번째 셀의 값이 addr입니다.
몇 가지 조건을 걸어두면 좋을 것 같습니다. 첫번째로 은행명과 점포명의 길이가 각각 1이상이 되었으면 좋겠습니다. 비어 있지 않았으면 좋겠습니다. 주소도 마찬가지이구요. 주소는 최소 10글자 이상의 길이를 가져야 적당한 것으로 고려하고자 합니다. 마지막으로 우편번호입니다. 우편번호는 현재 다섯자리가 표준입니다. 따라서 우편번호의 길이가 5개보다 길거나 짧다면 에러가 발생할 것입니다. 이런 제약을 넣어 코드를 수정해 보겠습니다.
037_excelAddr2.py
기존에 print() 함수가 있던 부분에 if 문을 넣었습니다. 그렇게 했을 경우에 출력창에 보이는 바와 같이 22번째 부터 출력을 하고 있습니다. 22번째 이전까지는 모두 어딘가 우리가 확인하고자 하는 조건에 안 맞았기 때문일껍니다.
if문을 보면 조건이 하도 많기 때문에 한 줄에 하나의 조건만을 걸었고 모두 and 조건을 걸었습니다. 즉, if문 안에 있는 조건들이 모두 맞아야지만 print() 함수가 출력이 되는 것입니다. 조건문에서 len()이라는 함수는 문자열의 길이를 알려주는 파이썬 내장 함수입니다. ‘홍길동’이라면 숫자 3을 넘겨주죠. 다음으로 addr.strip()과 같이 사용된 strip() 함수는 문자열 좌우에 붙어 있을 수 있는 공백 문자를 제거해 주는 역할을 합니다. ‘서울시 ‘라는 문자열을 예를 들어보자면 ‘서울시’ 다음에 공백이 하나 있습니다. 그 공백을 없애주는 것입니다.
다음으로 if문을 try: ~ except: ~ 문으로 예외 처리를 해 주었습니다. 주소록에는 아무런 정보도 들어있지 않은 경우가 있는데 이 경우에는 if 문 안의 조건문에서 에러가 발생합니다. 이런 경우에 대비해 에러가 나도 무시하고 except문 이하를 실행하라는 것입니다. except문의 pass는 아무런 동작을 하지 않을 것이니 무시하고 넘어가라는 의미입니다. 즉, except: 문은 try:와 짝이 되어야 하기 때문에 넣어준 것인데 except: 문에서 해 줄 것이 없으니 pass라는 약속어를 써서 그냥 넘기도록 한 것입니다.
'IT' 카테고리의 다른 글
파이썬 - 파워포인트 편지봉투 출력하기 (0) | 2025.02.02 |
---|---|
파이썬 - 파워포인트 슬라이드 복사하기 (0) | 2025.02.02 |
파이썬 - 편지봉투 받는사람 바꿔보기 (0) | 2025.02.02 |
파이썬 - 파워포인트 파일 준비하기 (0) | 2025.02.02 |
파이썬 - 파워포인트와 엑셀을 이용한 편지봉투 출력 - 프로젝트 소개 (0) | 2025.02.02 |