파이썬 엑셀 라이브러리 > openpyxl
파이썬 gui 라이브러리 > tkinter
파이썬 실행파일 변환 >pyinstaller
개요
핵심 기능 :
- 엑셀 A파일의 일부 내용을 엑셀 B파일에 저장 후 엑셀 수식에 의해 자동적으로 핵심 시트로 연결되어 형식을 채움
- gui를 구성해 파일을 선택할 수 있도록함
- 파일 입출력 기능을 이용해 txt 파일을 읽고 써 저번에 읽었던 파일을 자동적으로 세팅하도록 함
개발 사항
- 엑셀 라이브러리 자체는 매우 간단
- openpyxl은 정보를 읽고 쓰는 좌표는 0을 사용하지 않는다.
- 정보를 1 > 2로 넘기는 것 자체는 매우 간단하지만 엑셀 수식을 활용하여 형식을 채우는 과정에서 대략 하나의 형식을 채우는데 6개 셀 수식을 입력해야하는데 이게 엑셀 내부적으로 자동적으로 채우는 방안이 없어서(몰라서) 파이썬으로 코딩해 형식을 구성했다.
- tkinter을 처음 사용해봤지만 간단한 기능만 사용했기 때문에 문제되지는 않았다.
- 여기서 위젯을 행렬로 채우는 방법과 그냥 쌓는 방법이 있는데 둘이 동시에 사용할 수 없다.
- 파일명을 고정한채로 사용하면 편하지만 그럴 일은 절대로 없을 듯하여 파일명 변경에 대처할 수 있어야했다.
- tkinter을 이용해 버튼 클릭시 파일경로를 입력받을 수 있는 기능을 활용하여 사용자가 파일을 직접 사용할 수 있도록 하였다.
- 또한 매번 파일을 선택하는 과정을 생략하기 위해서 파일 입출력 기능을 활용하여 log.txt 파일을 구성하여 최근 선택한 파일을 읽을 수 있도록 하였다.
- 하지만 이 로그 파일이 pyinstaller을 사용할 때 살짝 애먹었다.
- pyinstaller 사용 자체는 라즈베리 파일 실습 시간에 리눅스 환경에서 실행파일을 만들었던것과 유사하여 어렵지 않았다.
- 하지만 코드 내부적으로 로그파일을 필수적으로 같은 파일 내에 있어야 했는데 조건문을 통해서 파일이 없다면 미리 open함수를 통해 미리 파일을 생성해 오류를 막고자 했다(그래서 vscode 내부에는 문제 없었다 ).
- 하지만 exe파일을 실행하기 전에 오류메세지 박스가 나오더라 그래서 웹서핑을 통해서 --add-data 옵션을 통해서 로그파일을 포함하고자 했는데 잘 안됐다.
- 그래서 일단은 log생성.exe를 만들어서 기존 주요실행파일과 세트로 구성하도록 했다.(이 log.exe는 그냥 단순히 로그 파일이 없다면 생성하는 프로그램이다.Path().is_file()를 활용했다.)
추가 개발 사항
사용자(주사님)의 요청사항이 있었다. 일단 완료처리와 추진일자 정보도 B엑셀 파일로 넘기고자 하는데 정확한 요청은 다음과 같다.
1. A파일의 가/부 열(기존의 B파일로 정보가 넘어간 행인지 가/부로 표시하는 열)에 "완"이라고 표시시 B파일의 완료 정보를 입력하도록한다.
2. 추진일자 날짜 정보를 기입하는데 자세한 요청은 이렇다, 프로그램이 실행될 때 C열에 있는 날짜 정보를 B파일의 추친사항에 입력한다.
- A,B파일의 마지막 추진사항 날짜가 서로 같지 않으면 B 파일에 추가적으로 추진사항 날짜를 입력한다.
- 추진사항의 날짜는 3번이 맥시멈이다. 즉 추진사항이 변동이 3번이 있다면 가장 오래된 추진사항을 제거하고 나머지 둘은 위로 한칸씩 땡기고 최근 추진사항을 추가한다.
- A파일의 추진사항 탭에는 날짜정보말고 다른 정보도 있기 때문에 (월,일)이 포함되어 있는지 확인해야한다.
'Toy Projects' 카테고리의 다른 글
melon chart crawling & EDA 실습 (0) | 2024.10.18 |
---|