xython (win32com + python)
xython의 역사
작성자
admin
작성일
2023-06-18 13:37
조회
901
하도 오래전에 만들어 놓은 것이라 한번 찾아보도록 노력해 보았더니
일단 2001년도까지 있는것을 보니 그전쯤되는것 같다
그러다가 일단 글로 찾은건 1.3버전으로 만든 2002년 4월 18일자로 문서로 만든게 있어서 올려봅니다
저도 도데체 언제부터 엑셀과 파이선을 가지고 업무에 이용을 했었는지를 한번 돌아보느라고 만들어 본것입니다
2005년전쯤엔가 sourceforge에도 오렸던것 같은데..
이제는 찾을수도 없네요...
==================================
현재까지의 만든 상황을 기술한다
*** 1.0에 추가된 사항
이모듈은 통합적으로 웬만한 것들은 사용이 가능하도록 만들었읍니다
1. 모든함수에는 sheet가 명시되어야 합니다
2. 값을 읽는것은 read로 시작하며
3. 값을 쓰는 것은 write로 시작합니다
4. 선을 긋는등의 그림은 dwg로 시작합니다
5. 하나의 자료가 아닌, 자료의 묶음은 Range를 사용한다
6. 두개의 문구사이에는 '_' 로 연결을 하였다 예) read_cell
7. 메소드는 모두 소문자를 사용함
출처 : www.sjpark.org / www.파이썬.com
개발자 : 박상진 / All right reserved by Sang Jin, Park
개발자 메일주소 : park@sjpark.org
버전 : 1.3, 2.0, 2.3, 2.5, 3.2, 3.3
최근 갱신일 : 2002-4-18, 2003-6-24 , 2003-7-3, 2003-7-4, 2003-8-1, 2003-9-18
*** 1.0에 추가된 사항
이모듈은 통합적으로 웬만한 것들은 사용이 가능하도록 만들었읍니다
1. 모든함수에는 sheet가 명시되어야 합니다
2. 값을 읽는것은 read로 시작하며
3. 값을 쓰는 것은 write로 시작합니다
4. 선을 긋는등의 그림은 dwg로 시작합니다
5. 하나의 자료가 아닌, 자료의 묶음은 Range를 사용한다
6. 두개의 문구사이에는 '_' 로 연결을 하였다 예) read_cell
7. 메소드는 모두 소문자를 사용함
*** 1.3에 추가된 함수들 :2002-4-18
1. insert #한줄삽입하기
2. compare_data #위아래 비교
3. delete #한줄삭제하기
4. statusbar #스테이터스바
5. all_sheetsname #현재 워크북의 모든 시트알아내기
*** 2.0에 추가된 함수들 : 2003-6-24
1. only_one #중복된 리스트의 자료를 없애는 것이다
2. only_one_del #중복된것중에서 아무것도없는 []마저 없애는 것이다
3. all_upper #모든 리스트의 자료를 대문자로 만드는것이다
4. all_lower #모든 리스트의 자료를 소문자로 만드는것이다
5. all_capitalize #모든 리스트의 자료를 첫글자만 대문자로 만드는것이다
6. del_cont #연속된같은값만 삭제
7. del_zzacsu #짝수값을 삭제
8. del_holsu #홀수값을 삭제
9. insert_new_line #리스트에 일정한 간격으로 자료삽입
*** 2.3에 추가된 함수들 : 2003-7-3
1. Activesheet에대한 함수추가
2. 함수의 변수로 들어가는 각 시트의 이름을 activesheet라고 명기를 하면, 자동으로 현재 오픈되어있는 시트의 이름이 들어갑니다
*** 2.5에 추가된 사항들 : 2003-7-4
1. activesheet를 전역변수를 사용하여 변경 하였다
2. 자동필터기능을 할수있는 함수를 넣었다
3. 시트의 이름을 바꿀수 있는것을 넣을수 있도록 하였다
*** 3.0에 추가할 사항
1. filemanager를 상속받아 사용할수 있도록 한다
2. 한글이 약간씩 문제가 일으키는것을 보완하도록 한다
3. 셀서식설정
4. 2.5에서 잘못된 부분 수정
*** 3.1에 추가할 사항
1. ullalla_time의 이름을 sjpark_time으로 변경
2. 이부분에서 import한 string와 time모듈을 불러들이지 않음
(sjpark_time에 이미 들어가 있음)
*** 3.2에 추가할 사항
1. fixstringsanddates를 별도의 함수로 분리하여 사용이 가능하도록 만듬
2. fixstring 함수 추가
3. 대소문자를 변경하는 capital함수 추가
*** 3.3에 추가사항 : 2003-9-18
1. 행과열의 넓이와 높이를 각개로 변경할수 있도록 추가하였다
2. 약간의 버그 수정
*** 3.8에 추가사항
1. 먼저 sjpark_time클래스 이름를 pcell모듈에 추가를 하였다
2. general 클래스를 만들어 현재 자주 사용하는 것들을 만들어 놓았다
*** 4.0에 추가사항
1. SJPARK_TIME모듈을 이곳에 포함시킴
2. GENERAL클래스를 따로 만듬
*** 5.0에 추가사항 : 2011-08-06
현재까지 정리를하지 않고, 무수히 많은 버전들을 과감히 지워버리거나 통합하여 하나의 화일로 만듬
select : 어떤것을 선택하는것은 write, read도 아니어서 select라는 것을 새로이 만듬
전체적으로 변경을 하여야 하는 부분은
*** 2004년 5월 2일
1. 부분을 통합하는등, 모든 부분에서 함수들의 이름을 변경하거나 통합하는 작업을 함
2. 이름을 통일하는 작업을 함
3. 이번부터는 버전의 개념을 없앰(뭐, 날짜나 버전이나 그게 그건것 같기는 하지만...)
*** 2004년 6월 23일
1. 전체적으로 각 속성의 이름을 변경함
*** 2004년 10월 27일
Pcell 2.0 발표
전체적으로 이름을 손봄
*** 2005년 12월 21일
전체적으로 이름과 내용들을 최신의 것으로 조정하였읍니다
*** 2006년 04월 07일
모든것을 조합해서 하나로 다시 만들었읍니다
기존에 변경하고 추가한것들이 따로 되어잇는것을 약간 수정하고 가감하였읍니다
*** 2009년 06월 20일
전체적으로 한번 더 고침
*** 2011년 03월 08일
몇가지를 변경함
*** 2011-08-18
설정만 하는것은 set이라고 정의한다
같은것을 좀 정리함
*** 2012-02-12
자료를 보완함
*** 2015-06-06
여러 자료들을 통합함
전체적으로 자료들을 조금씩 손보고 있음
새롭게 다시 이름을 작성해 봄
* 2022-09-17
기존의 가로를 x로 했던것을 학교때의 좌표로 변경
- 가로 : y
- 세로 : x
* range는 기본적이라 표시하지 않음
* 2022-10-15 : 전체적으로 변경
Pcell 1.0이었을때의 항목들
class pcell:
def __init__(self, filename=None):
def read_worksheets_name(self): #현재선택된 워크북의 시트들의 이름을 돌려준다
def activesheet(self): #현재의 엑셀중에서 활성화된 시트의 이름을 돌려준다
def save(self, newfilename=None): #별도의 지정이 없으면 기본의 화일이름으로 저장합니다
def close(self): #현재는 close를 시키면 엑셀워크북만이 아니라 엑셀자체도 종료 시킵니다
def show(self): #실행되어있는 엑셀을 화면에 보이도록 설정합니다
def hide(self): #실행되어있는 엑셀을 화면에 보이지 않도록 설정합니다
def activecell(self):
def read_cell(self, sheet, row, col): #값을 셀에서 갖고온다
def write_cell(self, sheet, row, col, value): #값을 셀에 넣는다. (사용법) write_cell(시트이름, 행번호, 열번호, 넣을값)
def read_range(self, sheet, row1, col1, row2, col2): #값을 일정한 영역에서 갖고온다
def write_range(self, sheet, topRow, leftCol, data): #일정한 영역에 값을 넣는다
def read_contiguousrange(self, sheet, row, col): #현재선택된 셀을 기준으로 연속된 영역을 가지고 오는 것입니다
def write_data(self, sheet, selected_data, start_cell='a1'): #행과열이 아닌 RANGE로 자료를 넣을
def fullscreen(self, fullscreen=1):
def read_usedrange(self, sheet):
def dwg_line(self, sheet, range,thickness,color): #선을긋는데 사용한다
def write_color(self, sheet, range,color): #영역에 색깔을 입힌다
def write_font(self, sheet, range,font): #영역에 글씨체를 설정한다
def write_fontsize(self, sheet, range,size): #영역에 글씨크기를 설정한다
def write_merge(self, sheet, range): #셀들을 통합하는 것이다
def read_username(self): #사용자를 알아내는 것입니다
def read_currentregion(self): #이것은 현재의 셀에서 공백과 공백열로 둘러싸인 활성셀영역을 돌려준다
def read_select_range(self): #현재선택된 영역의 주소값을 돌려준다
def read_worksheets_count(self): #시트의 갯수를 돌려준다
def read_workbook_path(self): #application의 이름을 돌려준다
def read_workbook_fullname(self): #application의 이름과 전체경로를 돌려준다
def read_workbook_name(self): #application의 이름을 돌려준다
def select(self ,sheet, rng = None):
def clear(self, sheet, rng): #선택한영역에서 값을 clear기능을 한다
def preview(self,sheet): #미리보기기능입니다
def add_new_sheet(self): #시트하나 추가하기
def write_unmerge(self, sheet, range): #셀병합을 해제하는 기능입니다
def write_numberformat(self, sheet, range, format): #숫자의 표시형식을 설정하는 것입니다
def write_autofit(self, sheet, range): #자동맞춤하는 기능입니다
def copy(self, sheet1, range1, sheet2, range2): #복사하기 기능입니다
def write_range_name(self, name, range): #영역을 이름으로 설정하는 기능입니다
def insert_new_line (data, number = 1,input_data=[]): #리스트에 일정한 간격으로 자료삽입
def insert(self, sheet, row_or_col): #한줄삽입하기
def delete(self, sheet, row_or_col): #한줄삭제하기
def statusbar(self, sheet, row_or_col): #스테이터스바, 아직 미확인
def all_sheetname(self):
def sheet_new_name(self, sheet, new_sheet_name): #기존에 있는 시트의 이름을 바꿉니다
def autofilter(self, sheet, row1,row2=None): #엑셀의 자동필터 기능을 추가한 것입니다
def autofilter_off (self, sheet): #자동필터기능을 없애는 것입니다
def write_number_property (self, sheet, num_col, style): #각 열을 기준으로 셀의 속성을 설정하는 것이다
def fullscreen(self, fullscreen=1): #전체화면으로 보기
def read_general(self):
def length_sero (self, sheet, num_sero, length=8.38):
def length_garo (self, sheet, num_garo, height=13.5):
class general:
def del_cont (data): #연속된같은값만 삭제
def del_zzacsu (data): #짝수값을 삭제
def del_holsu (data): #홀수값을 삭제
def del_step (num, data): #원하는 순서째의 자료를 삭제하기
def capital (self, value, argue=0): #대소문자를 변경하는 것입니다
def change_range(range='a1'): #셀의 aa10를 [10,27] 으로 바꾸어주는 함수
def excel_fixstringsanddates(self, aMatrix): #문자와 시간을 유니코드와 정수로 변환시킨다
def fixstring (aMatrix):
def compare_data(self, raw_data,req_number,project_name,vendor_name,nal):
class time:
#전체적인 사용방법 --->함수(time.localtime(time.time()))
def year(self, time_char=time.localtime(time.time())): #년 -----> ['02', '2002']
def month(self, time_char=time.localtime(time.time())): #월 -----> ['04', 'Apr', 'April']
def week(self, time_char=time.localtime(time.time())): #주 -----> ['5', '13', 'Fri', 'Friday']
def day(self, time_char=time.localtime(time.time())): #일 -----> ['05', '095']
def hour(self, time_char=time.localtime(time.time())): #시 -----> ['10', '22', 'PM']
def minute(self, time_char=time.localtime(time.time())): #분 -----> ['07']
def second(self, time_char=time.localtime(time.time())): #초 -----> ['48']
def total(self, time_char=time.localtime(time.time())): #종합 -----> ['04/05/02', '22:07:48', '04/05/02 22:07:48','2002-04-05']
def str_month (self, month): #이것은 월을 숫자로 받아서 문자로 돌려주는 것입니다 ---> ['MAR', 'MARCH']
def str_day(self, no):
일단 2001년도까지 있는것을 보니 그전쯤되는것 같다
그러다가 일단 글로 찾은건 1.3버전으로 만든 2002년 4월 18일자로 문서로 만든게 있어서 올려봅니다
저도 도데체 언제부터 엑셀과 파이선을 가지고 업무에 이용을 했었는지를 한번 돌아보느라고 만들어 본것입니다
2005년전쯤엔가 sourceforge에도 오렸던것 같은데..
이제는 찾을수도 없네요...
==================================
현재까지의 만든 상황을 기술한다
*** 1.0에 추가된 사항
이모듈은 통합적으로 웬만한 것들은 사용이 가능하도록 만들었읍니다
1. 모든함수에는 sheet가 명시되어야 합니다
2. 값을 읽는것은 read로 시작하며
3. 값을 쓰는 것은 write로 시작합니다
4. 선을 긋는등의 그림은 dwg로 시작합니다
5. 하나의 자료가 아닌, 자료의 묶음은 Range를 사용한다
6. 두개의 문구사이에는 '_' 로 연결을 하였다 예) read_cell
7. 메소드는 모두 소문자를 사용함
출처 : www.sjpark.org / www.파이썬.com
개발자 : 박상진 / All right reserved by Sang Jin, Park
개발자 메일주소 : park@sjpark.org
버전 : 1.3, 2.0, 2.3, 2.5, 3.2, 3.3
최근 갱신일 : 2002-4-18, 2003-6-24 , 2003-7-3, 2003-7-4, 2003-8-1, 2003-9-18
*** 1.0에 추가된 사항
이모듈은 통합적으로 웬만한 것들은 사용이 가능하도록 만들었읍니다
1. 모든함수에는 sheet가 명시되어야 합니다
2. 값을 읽는것은 read로 시작하며
3. 값을 쓰는 것은 write로 시작합니다
4. 선을 긋는등의 그림은 dwg로 시작합니다
5. 하나의 자료가 아닌, 자료의 묶음은 Range를 사용한다
6. 두개의 문구사이에는 '_' 로 연결을 하였다 예) read_cell
7. 메소드는 모두 소문자를 사용함
*** 1.3에 추가된 함수들 :2002-4-18
1. insert #한줄삽입하기
2. compare_data #위아래 비교
3. delete #한줄삭제하기
4. statusbar #스테이터스바
5. all_sheetsname #현재 워크북의 모든 시트알아내기
*** 2.0에 추가된 함수들 : 2003-6-24
1. only_one #중복된 리스트의 자료를 없애는 것이다
2. only_one_del #중복된것중에서 아무것도없는 []마저 없애는 것이다
3. all_upper #모든 리스트의 자료를 대문자로 만드는것이다
4. all_lower #모든 리스트의 자료를 소문자로 만드는것이다
5. all_capitalize #모든 리스트의 자료를 첫글자만 대문자로 만드는것이다
6. del_cont #연속된같은값만 삭제
7. del_zzacsu #짝수값을 삭제
8. del_holsu #홀수값을 삭제
9. insert_new_line #리스트에 일정한 간격으로 자료삽입
*** 2.3에 추가된 함수들 : 2003-7-3
1. Activesheet에대한 함수추가
2. 함수의 변수로 들어가는 각 시트의 이름을 activesheet라고 명기를 하면, 자동으로 현재 오픈되어있는 시트의 이름이 들어갑니다
*** 2.5에 추가된 사항들 : 2003-7-4
1. activesheet를 전역변수를 사용하여 변경 하였다
2. 자동필터기능을 할수있는 함수를 넣었다
3. 시트의 이름을 바꿀수 있는것을 넣을수 있도록 하였다
*** 3.0에 추가할 사항
1. filemanager를 상속받아 사용할수 있도록 한다
2. 한글이 약간씩 문제가 일으키는것을 보완하도록 한다
3. 셀서식설정
4. 2.5에서 잘못된 부분 수정
*** 3.1에 추가할 사항
1. ullalla_time의 이름을 sjpark_time으로 변경
2. 이부분에서 import한 string와 time모듈을 불러들이지 않음
(sjpark_time에 이미 들어가 있음)
*** 3.2에 추가할 사항
1. fixstringsanddates를 별도의 함수로 분리하여 사용이 가능하도록 만듬
2. fixstring 함수 추가
3. 대소문자를 변경하는 capital함수 추가
*** 3.3에 추가사항 : 2003-9-18
1. 행과열의 넓이와 높이를 각개로 변경할수 있도록 추가하였다
2. 약간의 버그 수정
*** 3.8에 추가사항
1. 먼저 sjpark_time클래스 이름를 pcell모듈에 추가를 하였다
2. general 클래스를 만들어 현재 자주 사용하는 것들을 만들어 놓았다
*** 4.0에 추가사항
1. SJPARK_TIME모듈을 이곳에 포함시킴
2. GENERAL클래스를 따로 만듬
*** 5.0에 추가사항 : 2011-08-06
현재까지 정리를하지 않고, 무수히 많은 버전들을 과감히 지워버리거나 통합하여 하나의 화일로 만듬
select : 어떤것을 선택하는것은 write, read도 아니어서 select라는 것을 새로이 만듬
전체적으로 변경을 하여야 하는 부분은
*** 2004년 5월 2일
1. 부분을 통합하는등, 모든 부분에서 함수들의 이름을 변경하거나 통합하는 작업을 함
2. 이름을 통일하는 작업을 함
3. 이번부터는 버전의 개념을 없앰(뭐, 날짜나 버전이나 그게 그건것 같기는 하지만...)
*** 2004년 6월 23일
1. 전체적으로 각 속성의 이름을 변경함
*** 2004년 10월 27일
Pcell 2.0 발표
전체적으로 이름을 손봄
*** 2005년 12월 21일
전체적으로 이름과 내용들을 최신의 것으로 조정하였읍니다
*** 2006년 04월 07일
모든것을 조합해서 하나로 다시 만들었읍니다
기존에 변경하고 추가한것들이 따로 되어잇는것을 약간 수정하고 가감하였읍니다
*** 2009년 06월 20일
전체적으로 한번 더 고침
*** 2011년 03월 08일
몇가지를 변경함
*** 2011-08-18
설정만 하는것은 set이라고 정의한다
같은것을 좀 정리함
*** 2012-02-12
자료를 보완함
*** 2015-06-06
여러 자료들을 통합함
전체적으로 자료들을 조금씩 손보고 있음
새롭게 다시 이름을 작성해 봄
* 2022-09-17
기존의 가로를 x로 했던것을 학교때의 좌표로 변경
- 가로 : y
- 세로 : x
* range는 기본적이라 표시하지 않음
* 2022-10-15 : 전체적으로 변경
Pcell 1.0이었을때의 항목들
class pcell:
def __init__(self, filename=None):
def read_worksheets_name(self): #현재선택된 워크북의 시트들의 이름을 돌려준다
def activesheet(self): #현재의 엑셀중에서 활성화된 시트의 이름을 돌려준다
def save(self, newfilename=None): #별도의 지정이 없으면 기본의 화일이름으로 저장합니다
def close(self): #현재는 close를 시키면 엑셀워크북만이 아니라 엑셀자체도 종료 시킵니다
def show(self): #실행되어있는 엑셀을 화면에 보이도록 설정합니다
def hide(self): #실행되어있는 엑셀을 화면에 보이지 않도록 설정합니다
def activecell(self):
def read_cell(self, sheet, row, col): #값을 셀에서 갖고온다
def write_cell(self, sheet, row, col, value): #값을 셀에 넣는다. (사용법) write_cell(시트이름, 행번호, 열번호, 넣을값)
def read_range(self, sheet, row1, col1, row2, col2): #값을 일정한 영역에서 갖고온다
def write_range(self, sheet, topRow, leftCol, data): #일정한 영역에 값을 넣는다
def read_contiguousrange(self, sheet, row, col): #현재선택된 셀을 기준으로 연속된 영역을 가지고 오는 것입니다
def write_data(self, sheet, selected_data, start_cell='a1'): #행과열이 아닌 RANGE로 자료를 넣을
def fullscreen(self, fullscreen=1):
def read_usedrange(self, sheet):
def dwg_line(self, sheet, range,thickness,color): #선을긋는데 사용한다
def write_color(self, sheet, range,color): #영역에 색깔을 입힌다
def write_font(self, sheet, range,font): #영역에 글씨체를 설정한다
def write_fontsize(self, sheet, range,size): #영역에 글씨크기를 설정한다
def write_merge(self, sheet, range): #셀들을 통합하는 것이다
def read_username(self): #사용자를 알아내는 것입니다
def read_currentregion(self): #이것은 현재의 셀에서 공백과 공백열로 둘러싸인 활성셀영역을 돌려준다
def read_select_range(self): #현재선택된 영역의 주소값을 돌려준다
def read_worksheets_count(self): #시트의 갯수를 돌려준다
def read_workbook_path(self): #application의 이름을 돌려준다
def read_workbook_fullname(self): #application의 이름과 전체경로를 돌려준다
def read_workbook_name(self): #application의 이름을 돌려준다
def select(self ,sheet, rng = None):
def clear(self, sheet, rng): #선택한영역에서 값을 clear기능을 한다
def preview(self,sheet): #미리보기기능입니다
def add_new_sheet(self): #시트하나 추가하기
def write_unmerge(self, sheet, range): #셀병합을 해제하는 기능입니다
def write_numberformat(self, sheet, range, format): #숫자의 표시형식을 설정하는 것입니다
def write_autofit(self, sheet, range): #자동맞춤하는 기능입니다
def copy(self, sheet1, range1, sheet2, range2): #복사하기 기능입니다
def write_range_name(self, name, range): #영역을 이름으로 설정하는 기능입니다
def insert_new_line (data, number = 1,input_data=[]): #리스트에 일정한 간격으로 자료삽입
def insert(self, sheet, row_or_col): #한줄삽입하기
def delete(self, sheet, row_or_col): #한줄삭제하기
def statusbar(self, sheet, row_or_col): #스테이터스바, 아직 미확인
def all_sheetname(self):
def sheet_new_name(self, sheet, new_sheet_name): #기존에 있는 시트의 이름을 바꿉니다
def autofilter(self, sheet, row1,row2=None): #엑셀의 자동필터 기능을 추가한 것입니다
def autofilter_off (self, sheet): #자동필터기능을 없애는 것입니다
def write_number_property (self, sheet, num_col, style): #각 열을 기준으로 셀의 속성을 설정하는 것이다
def fullscreen(self, fullscreen=1): #전체화면으로 보기
def read_general(self):
def length_sero (self, sheet, num_sero, length=8.38):
def length_garo (self, sheet, num_garo, height=13.5):
class general:
def del_cont (data): #연속된같은값만 삭제
def del_zzacsu (data): #짝수값을 삭제
def del_holsu (data): #홀수값을 삭제
def del_step (num, data): #원하는 순서째의 자료를 삭제하기
def capital (self, value, argue=0): #대소문자를 변경하는 것입니다
def change_range(range='a1'): #셀의 aa10를 [10,27] 으로 바꾸어주는 함수
def excel_fixstringsanddates(self, aMatrix): #문자와 시간을 유니코드와 정수로 변환시킨다
def fixstring (aMatrix):
def compare_data(self, raw_data,req_number,project_name,vendor_name,nal):
class time:
#전체적인 사용방법 --->함수(time.localtime(time.time()))
def year(self, time_char=time.localtime(time.time())): #년 -----> ['02', '2002']
def month(self, time_char=time.localtime(time.time())): #월 -----> ['04', 'Apr', 'April']
def week(self, time_char=time.localtime(time.time())): #주 -----> ['5', '13', 'Fri', 'Friday']
def day(self, time_char=time.localtime(time.time())): #일 -----> ['05', '095']
def hour(self, time_char=time.localtime(time.time())): #시 -----> ['10', '22', 'PM']
def minute(self, time_char=time.localtime(time.time())): #분 -----> ['07']
def second(self, time_char=time.localtime(time.time())): #초 -----> ['48']
def total(self, time_char=time.localtime(time.time())): #종합 -----> ['04/05/02', '22:07:48', '04/05/02 22:07:48','2002-04-05']
def str_month (self, month): #이것은 월을 숫자로 받아서 문자로 돌려주는 것입니다 ---> ['MAR', 'MARCH']
def str_day(self, no):