Package: xython
About xython module / 개요Functional Programming for Excel, Hwp, Word, Outlook, Color, Etc by PythonManual / 사용법oficial document :https://sjpkorea.github.io/xython.github.io/oficial website :www.xython.co.kr(Korean base)Components / 구성은- pcell       : for Excel       / 엑셀을 다루는 것
- pcell_event : for Excel Event / 엑셀의 이벤트를 다루는것
- scolor      : for Color       / 색의 RGB값을 편하게 사용가능하도록 만든 것
- jfinder     : for Regex       / 정규표현식을 좀더 편하게 사용하도록 만든 것
- anydb       : for Database    / sqlite와 pandas 를 좀더 쉽게 사용할수있도록 만든것
- han         : for hwp        / 아래아 한글을 다루기위해 만든 것 (*** New)
- ganada      : for Word        / 워드를 다루기위해 만든 것
- mailmail    : for outlook     / outlook을 다루는것
- pyclick     : for KEyboard & Mouse control / 키보드와 마우스를 다루는 모듈
- pynal       : for Date & Time / 시간과 날짜를 다루는것
- youtil      : utilities / 이러저런 문장이나 시간등을 변환하는데 도움이되는 것
- basic_data  : xython package for general enum / xython패키지에서 사용되는 전반적인 공유 자료들을 저장하는 곳
- basic_sample: sample용으로 사용하는 자료를 분리해서 만든것
- etc         : 나머지들은 추가적인 내용들을 위하여 사용하는 것임Brief / 개괄적인 설명this is target for easy RPA system of office workIt composed of several python files, and basic concept is function styletotal over the 1500 functions in this packageplease see how to use for this package in xython.co.krnow under making GUI toolkit for easy & no installing for python for this package이모듈은 업무용으로 많이 사용하는 엑셀 , 색, 정규표현식, 등에 대하여 Python과 win32com을 기본으로 사용하여 각기 새롭게 모듈을 만들어서 좀더 쉽고 편하게 사용하고 만들자는 것입니다
자동화는 각자의 사용에 대한만든 이유는 우리가 업무등을 하는 입장에서, 손으로 작업하기에는 양이 많고, 그렇다고
계속 반복적으로 일어나는 일은 아니며, VBA등을 만들어서 사용하기에는 어렵고 힘든 부분에 대해서파이썬이라는 훌룡한 언어를 위용하여, 좀더 쉽고 간결하게 몇가지 기능만 배워도 20줄안으로 자신만의 코드를
만들어 사용할수있는 기준을 만들기 위한 것입니다또한 보통 많이 사용하는 코드들은 첨부된 sample코드를 보시거나 저의 사이트에 와서 비슷한것을 다운 받은후
변경해서 사용하시기를 추천 드립니다좀더 편한 업무의 일을 하기위한 것입니다Version History / 버전 변화- 1.15.0 : word를 위한 ganada모듈을 전반적으로 많이 Update함
- 1.16.0 : applied docstring style for all files
- 1.17.0 : connected with github document system
- 1.18.0 : 최적화 진행중, 일부 함수들 추가 및 삭제
- 1.19.0 : 최적화 진행중
- 1.20.0 : 최적화 진행중
- 2023-03-02 : 전반적으로 이름을 수정함
- 2.0.0 : 전체적으로 정리 및 고정화
- 2.1.0 : 전체적으로 변경하였으며, han으로 hwp를 사용하는 새로운 모듈을 만듦
- 2.2.0 : han과 ganada의 함수이름을 통일 시키는 부분을 변경하고, han을 많이 추가함ganada의 용어 설명- active_document(화일) > paragraph(문단) > sentence(문장) > word(한 단어) > character(한글자)
- active_document : 현재 선택된 워드문서, word라는 단어가 두가지 이름으로 사용되기때문에, file로 통일시킴
- paragraph : 줄바꿈이 이루어지기 전까지의 자료
- line : 한줄
- word : 공백으로 구분된 단어 (다른의미 : 프로그램이름과 혼동을 피하기위해 file이라는 이름으로 사용)
- character : 글자 1개
- content : 라인, 문단, 단어들을 총괄적으로 뜻하는것, 항목이라고 설명하는것이 좋을듯...

- bookmark : 책갈피
- range : 임의적으로 설정할수가 있으며,word밑에 range가 설정이 되고
- select를 하면 selection밑에 자동으로 range객체가 설정된다

- 형태적인 분류 : active_document(화일) > sentence(문장) > word(한 단어) > character(한글자)
- 의미적인 분류 : active_document(화일) > paragraph(문단) > line(줄) > word(한 단어) > character(한글자)
- sentence : 표현이 완결된 단위, 그 자체로 하나의 서술된 문장이 되는 것
- paragraph : 줄바꿈이 이루어지기 전까지의 자료

- x_char : 첫문자에서부터 번호째
- x_word : 처음에서부터의 단어순번째
- x_para : 처음에서부터의 문단의 순번째
- x_line : 처음에서부터의 줄의 순번째
- x_sel : 선택된 첫

- xy_s : selection의 처음과 끝위치
- x_len : x는 시작위치, l은 길이
- x_sel : selection의 시작점
- y_sel : selection의 끝점

- nth : 맨처음부터 몇번째의 의미

- MS워드를 사용하기 쉽게하기위해 만든 모듈입니다,
- 차후에는 다른 Libero및 한글의 연동또한 만들 예정입니다

- 기본적으로 적용되는 selection은 제외한다기본 사용법pcell-각 메소드는 각각 별도의 내용으로 사용합니다Pcell의 모듈을 만들 때 나름대로 편하고 쉽게 이름을 만들려고 하였습니다. 기본적인 틀을 만들어 놓으니, 분명억지로 지어진 이름또한 있음을 시인합니다. 나름대로 생각하고 고심한끝에 만들어진 이름이오니 맘에 들지 않는 부분이 있이더라도 양해를 부탁드립니다물론, 지금의 이름이 최종이라고는 생각하지 않고 있습니다. 좋은 이름이라는것은 어떤 메소드가 들어가 있는지 잘 몰라도 거의 사용하는데 사람의 생각에서 쉽게 사용을 할수 있도록 만드는 것이라고 생각을 합니다아마 한 4~5번정오는 크게 이름을 변경한 것 같습니다. 만들어놓고 조금지나면 저스스로가 도데체 이것의 이름은 왜 이렇게 만들어놓은거야???라는 질문을 하는경우가 가끔있습니다. 이리바꾸고 저리바꾸어도 맘에 안드는구석이 아직 많습니다한사람의 이름이 인생에서 차지하는부분이 많듯이 제가만든것또한 그러하지만, 만약 맘에 안드시는 것이 있으시면 본인스스로가 바꾼어서 사용하셔도 됩니다단, 기존의것은 그대로 두시고 아래부분에 새로운 메소드를 추가하셔서 위의것을 그대로 사용하시면 될것입니다그래서 다음과 같은 원리를 이용해서 만들었으나, 조금은 틀린부분도 있지만…1. 이름은 기본적으로 3부분으로 만들었으며 각부분은 언더바(_)로 연결했습니다
2. 읽을때는 read, 쓸때는 write, 삭제는 delete, 추가는insert등을 사용하였습니다
3. 두번째의 이름의 규칙은
	관련된 부분에 따라 다른것을 사용하며 다음과 같은 것이 사용이 됩니다
	거진 영역을 나타내는 부분으로 사용하였습니다
	range, workbook, cell, line, column
4. 세번째 부분이 어떤 일을 할것인지를 알아보는 것입니다
5. 일반사항은 다음과 같습니다모든함수에는 sheet가 명시되어야 합니다값을 읽는것은 read로 시작하며값을 쓰는 것은 write로 시작합니다선을 긋는등의 그림은 dwg로 시작합니다하나의 자료가 아닌, 자료의 묶음은 Range를 사용한다두개의 문구사이에는 '_' 로 연결을 하였다 예) read_cell메소드는 모두 소문자를 사용함예를 들어, 어떤셀에 값을 입력하는 것은 write_value_in_cell라는 이름으로 구성하였습니다
그리고 부가적으로 함수의 변수로 사용되는부분은 큰 것->작은것으로 만들었으며, 영역을 표시하는 부분은 모두 리스트를 기준으로 하나로 만들었습니다.그저, 그렇다는것을 이해바라며, 실질적으로 코드를 보시면 더 쉽게 이해가 가실것으로 생각됩니다.
보지않고 찾지않아도 함수의 이름을 생각해낼수있도록 만든다고 나름대로 정의한 것입니다.* 0,0 : 왼쪽아래
  * add : 기존에 있는것의 일반적인 끝에 넣는 것
  * append : 맨끝에 추가할 때
  * By_limit : 번호가 들어가 그때까지 적용
  * By_step : 번호가 들어가 그 간격으로 실행될 때
  * change : 입력값을 바꾸는 목적
  * check : 확인
  * color : 색넣기
  * control : 어느 영역안에서 조정을 할 때
  * cpx : 셀의 좌표번호
  * curr_x : 키보드등으로 움직이는 현재의 셀
  * current : 어떤 객체 든지 현재에 활성화된것을 뜻함
  * data : 결과값으로 어떤 종류의 자료를 돌려줄 때
  * delete : 삭제하기
  * Dic : 자료의 형태가 dic형태로 줄때는 맨뒤에 dic을 붙임
  * draw : 선을 그을 때 사용
  * dtx : 두 셀간의 차이
  * dx : 두지점간의 차이
  * fill : 넣기
  * Find : 찾기
  * Get : 입력값이 없는 조건에서의 자료를 갖고올때 , read를 제외한 모든 자료를 갖고올 때
  * index : 몇번째의 순서대로 어떤 것을 하는 것
  * input : 내부적으로 어떤 값을 넣을 때
  * Input_dic : 사전형식일 때
  * Input_lisr1d : 1차원 리스트가 입력값일 때
  * Input_list2d : 2차원 리스트가 입력값일 때
  * Input_value : 숫자형의 자료가 입력될때
  * Insert : 내가 원하는위치에 넣는 것
  * make : 만들기
  * Move : 이동하기
  * mx, mpx : 마우스의 좌표
  * New : 새로운것을 만드는 개념
  * obj : 객체를 뜻함
  * paint : 영역에 색칠하는 것
  * pick : 여러개중에서 하나를 갖고올 때
  * pwh : 넓이, 높이의 길이를 픽셀단위로 나타낸것
  * px : 그림을 그리고 싶은 좌표, 커서의 픽셀 좌표
  * Read : 입력값이 있으면서 어떤 자료를 갖고올 때 사용, 보여지는 자료의 값을 갖고올 때
  * Replace : 바꾸기
  * search : 찾기
  * sel_x : 셀렉션된 영역
  * select : 어떤 영역을 선택할 때
  * set : 입력값이 특별한것없이 자료를 설정하는 것, 설정값을 변경할 때
  * space_px : 기준이되는 것
  * split : 분리하기
  * tbl_x : 테이블의 x
  * tx : cell의 번호에 대한것, table에서 몇번째 셀이라는 쯧
  * win_x : 윈도우의 x
  * Write : 눈에 보이는 것
  * x, y : cell의 기본좌표, X: 가로줄번호, Y: 세로줄 번호
  * xx : 가로줄의 영역, [3,6]
  * xy : 하나의 셀에대한 좌표
  * xyxy : 셀의 영역에 대한 좌표
  * yy : 세로줄의 영역, [3,6]
  * 함수이름 : 액션_행위설명_범위_설명, Write_value_in_cell_by_limithan아래아 한글을 사용하기 편하도록 사용하기위해 만들었다.
만약 워드나 엑셀의 자료를 서로 옮기는것은 ganada, pcell을 이용하면 된다- 줄이나 단어등을 기준으로 이동이 가능하도록 함
- 테이블을 만들고, 좌표를 기준으로 Text를 넣을수 잇돌고 함
- 원하는 위치에 text삽입가능
- 글자색을 scolor로 이용하여 적용가능scolor이것은 모든 외부로 들어오고 나가는 것은 전부 RGB형태로 이루어지도록 만든다- 색을 변경하고 관리하는 모듈이며
- 색의 변화를 잘 사용이 가능하도록 하기위한 것이다
- 기본 입력 예 : "빨강", "빨강55", "red55", "0155"
- 기본색 ==> 12색 + (하양, 검정, 회색),
- 큰변화 ==> 1~9단계, 작은변화 ==> 1~9단계
- 기본함수 : get_color_rgb("red55"), get_rgb_3input(색, 큰변화, 작은변화)
- 모든 색의 표현이나 결과는 rgb로 돌려준다Jfinder이름을Jfinder라고 지었으며, 아래와 같은 특성을 가지고 있다건수는를 사용하여 45라는 식으로 표현을 하였고한글, 영어와 같은 것은 대괄호를 사용하여 적용하였다 [한글]처음과 끝은 [처음], [끝]처럼 나타냈다그리고 이것은 누가 보아도 아~~ 무엇을 찾을려고 했는지를 알수있도록 하기위한것이며찾기기능중에 전부 찾아서 보기쉽도록 돌려주는 것과 같은 몇가지 메소드들을 만들어 넣었읍니다
제일 중요한 코드를 만드는 기능은 아래와 같읍니다
대략적으로 위의것을 읽은후에 보시면 이해가 되실부분이 많읍니다아래의 코드들은 정규표현식을 사용하면서, 내가 만든 표현식조차도 다시 읽기가 어려워서, 나름 다른 형태로 만들어 본것인데. 생각보다 가독성이 좋아서 같이 공유해보는것이다
또한 만든김에 결과로 돌려주는것도 하나만 받으면 전부 가능하도록 만들어 보았다
위에서 언급한 이메일 형식이 맞느지를 보는 것은 상당히 반복적이기 때문에 크게 혼돈은 없다
하지만, 실제 코드를 사용하다 보면, 외계어를 해석하는 상태까지 와야할 경우가 있다([a-zA-Z0-9_.+-]+)@[a-zA-Z0-9_.+-]+.[a-zA-Z0-9_.+-]+이정도만해도 간단한 축에 속한다. 맨처음 만들때는 그나마 이해를 하지만, 다른사람이 만든 것을 이해하는데 상당한 시간이 걸린다는 것이고, 또한 일반적인 사용자들이 이것을 공부하고 이해하는데 어려움이 잇을 것 같으면서 동시에, 정규표현식의 강력함을 사용할수 있도록 생각해 보는 것이다
그래서 좀더 간단하게 사용법을 만들고,[영어&숫자.+-:1~]@[영어&숫자.+-:1~].[영어&숫자.+-:1~]
이렇게 바꾸면 좀더 읽기가 쉬워진다jfinder에는 자주사용하는 언어를 등록할수도 있읍니다. 예를 들어 일본어나 한자를 등록한것처럼 하면 사용이 가능하다.
간단하게 다시 사용하는 방법을 알려주면, 너무 줄여놓은 정규표현식을 좀더 늘이는 것이라고 생각하면 됩니다. 여기에서 느낀 부분은 전문가가 사용하기에는 좋지만, 비전문가가 사용하기 쉽게, 예전에는 단어1개가 아주 중요한 속도까지 영향을 주지만, 지금은너무 줄이지 않아도 된다는 것이다. 기계에 가까운 언어에서 좀더 사용자에 가까운 언어로 만들어도 된다는 것이지요
파이선이 사용하기에 좀더 편한방법이 되는 것이지요- 대괄호로 묶는다
- 반복갯수는 대괄호안에 사용하며 ~로 나타낸다
- 맨처음 맨마지막등의 용어는 [처음], [끝]등의 이유로 나타낸다 
- 특수문자(re모듈내에 의미가있는 문자)는 \를 붙여서 사용한다
- 어떤문자의 앞과뒤에있을때는 (앞에있음:abc)이라고 사용하면 abc가 앞에있는 문자열을 찾는것이다jfinder의 용어 설명- search : 찾기
- replace : 바꾸기
- change : 바꾸기
- delete : 
- get : 
- is : True, False로 구분mailmail이름을mailmail라고 지었으며, 아웃룩의 이메일을 관리하는 도구입니다이것의 장점은 엑셀이나 Util과 연동하여 편의성을 더욱 증대하고있읍니다기본적인 사용법이나 함수의 이름은 같은 형태를 따릅니다