pcell의 기본 사용법

작성자
sjpark
작성일
2024-08-17 09:28
조회
174

기본적인 함수 사용법

pcell을 비롯하여 xython은 함수형프로그램입니다. 그래서 어떤 기능을 추가할때는 편하게 추가를 하여도 기존의 코드에 영향을 주지 않습니다

그래서, 제일먼저 알아야 할 부분중에 하나가 함수를 사용하는 방법입니다. 그런데 함수를 사용하는 방법이 어려움은 없고, 단지 알아두면 좋을 부분중에 하나가 함수의 이름을 코드에 써야하는데, 어떤 기준으로 함수이름을 만들었는지에 대해서 알면 좋다는 것입니다

word-image-1870-1.png

위의 것은 기본이 되는 것입니다. 그래서 일반적인 함수의 이름은 이것으로 족하지만, 좀더 추가하면 뒷부분에 이것저것을 구분하여 만들었습니다

먼저 알아볼 것이 셀의 값을 읽어오거나 쓰는 부분이 가장 기본이겠지요. 형태는 가장 계략적인 설명을 하면

아래와 같습니다

word-image-1870-2.png

간단하게 함수의 사용예를 보여드리면, sheet1의 셀 [1,1]의 값을 읽어오는 방식인데, 어떤값이 올지 모르기때문에, 아예 값을 입력하고, 그곳을 다시 읽어오도록 해봅니다
  • 현재시트의 [1,1]셀에 “test”라는 값을 넣은 후
  • 다시 [1,1]의 값을 읽어온 것을 print 합니다

# -*- coding: utf-8 -*-
import pcell

excel = pcell.pcell()
excel.write_value_in_cell("", [1,1], "test")
value = excel.read_value_in_cell("", [1,1])
print(value)

word-image-1870-3.png word-image-1870-4.png

대부분 엑셀을 다루는 목적은 자료를 읽고/쓰는 부분이기 때문에, 자료를 가공하는 부분은 엑셀안에 있는 여러 기능을 사용하는 것보다 파이썬의 기본 기능을 사용하는 것이 더욱 편한 것 같습니다

word-image-1870-5.png

주소 변환하기

엑셀에서는 자료가 있는 것을 알기위해서는 셀의 주소를 기준으로 모든 것을 관리합니다. 그래서 생각보다 많은 형태로 셀의 위치나 영역에대한 주소값을 사용합니다.

그리고 엑셀에서는 여러가지 형태로 주소값을 사용하고 있어서, 이런 여러 종류들에 대한 정리가 필요해 보였습니다

그래서 제일먼저 한것중에 하나가 주소를 나타내는 방법을 영역을 나타낼 때 사용하는 왼쪽위를 나타내는 주소 1개와 오른쪽 아래를 나타내는 셀주소 1개로 나태내는 4자리로 나타내기로 하고, 가로세로의 기준을 정해서 아래와 같이 사용하기로 하였습니다

개인적으로 엑셀의 VBA를 사용할때의 주소형태와 일반적인 형태들의 상태가 틀려서 하나로 통일하여 사용하기로 하였습니다

word-image-1870-6.png

추가적인 형태로 엑셀에서 사용하는 간단한, 형태들을 보여드리면, 아래와 같은 형태들을 사용하고 있습니다

word-image-1870-7.png
A1, [1,2] 셀하나의 주소
A:C, [1,0,3,0] 가로의 여러줄
3:5, [0,3,0,5] 세로의 여러줄
나, 다 A1:D5, [1,1,4,5] 영역
나, 다 A1:D5 r1c1형태의 주소
위와같이 여러형태의 자료를 사용하는데, pcell에서는 xyxy로 언급을 하는 4자리의 번호로 만들어주는 함수가 있습니다. 그래서 만든 함수가 check_address_value라는 함수입니다. 이것을 사용하면 거의 모든 주소의 형태는 알아서 다 변경을 해줍니다. (참고 : check로 시작하는 함수는 확인을 위한것으로 결과값은 같은 형태를 유지하는 것입니다)

가끔은 문자로된 세로열인 “cf”와 같은 것을 숫자로 바꾸기 귀찮은 경우가 많아서, 그냥, [1,2,3,”cf”]라는 식으로 사용해도 되게 만들었습니다. 귀찮다는 생각도 하지만, 가끔 만든 것을 확인할 때, 제대로 입력이 되었는지를 확인할때는 편하기도 합니다

알파벳 형식의 주소를 숫자로 변경하면, 코딩을 하기는 쉽지만, 반대로 확인을 할때는 이게 진짜 제대로 “cf”가 제대로 들어갔는지 다시 계산을 해야 하더군요. 그래서 조금 큰 영역을 맨처음 사용할때는 그냉 알파벳으로 넣는것도 좋습니다

아랫부분에 여러가지 형식으로 사용되는 주소를 알려드리며, 최종 결과물은 4개의 숫자로 변환됩니다

# -*- coding: utf-8 -*-
import pcell
excel = pcell.pcell()
print("$1:$8 => ", excel.check_address_value("$1:$8"))
print("1 => ", excel.check_address_value("1"))
print("a => ", excel.check_address_value("a"))
print("[3,4] => ", excel.check_address_value([3,4]))
print("d3 => ", excel.check_address_value("d3"))
print("d3:f2 => ", excel.check_address_value("d3:f2"))
print("[3,4,9,10] => ", excel.check_address_value([3,4,9,10]))
print("[9,10,3,4] => ", excel.check_address_value([9,10,3,4]))
print("[3,4,9,'j'] => ", excel.check_address_value([3,4,9,"j"]))
print("3:5 => ", excel.check_address_value("3:5"))
print("f:i => ", excel.check_address_value("f:i"))

word-image-1870-8.png

문자열을 넣어도 되고, 영역을 아랫부분이 먼저와도 정렬해서 돌려주고 있습니다

날짜에 대한 생각

우리가 원하는 값을 쓰거나 읽어오는 것이 가장 중요한 부분입니다

그런데, 생각보다 어려분 부분중에 하나가 날짜에 대한 부분입니다. 여러가지 모양새를 사용하고 나타내기도 하지만, 반대로 많은 분들이 자주 사용하기 때문에, 시간과 날짜에 대한 부분을 좀더 생각을 해보는 것이 좋습니다

엑셀에 값을 넣었다면, 문자의 경우는 딱 1가지의 경우만 가능하지만, 숫자는 여러 형태로 표현이 되어야 한다

그렇지 않다고 한다면, 숫자용 문자열을 따로 만들고, 날짜용도 따로, 통화단위도 따로 만드는등의 여러가지를 해야하는데, 이런것 대신에 우리는 표현방법을 사용해서 실제 값과는 다르게 원하는 형태로 나타내는 것이다

** 우리가 입력하는 형태가 그 표현되는 자료형의 기본형태 아닌경우가 있다

즉, 우리가 실제적으로 표현하는 방법은 예전부터 행하는 부분과 자주사용하는 것은 다른 기능을 만들어서 사용하고 있다는 부분입니다

예를 들어 날짜를 표현하는 방법에서 가장 정확한 것은
  • 원하는 날짜의 숫자를 넣는다 => 숫자에대한 날짜용 형식을 지정
이렇게 사용해야 제일 정확한 표현인데

오늘이 윈도우에서 날짜계산을 시작한 날부터 몇번째인지를 알기가 어렵기 때문에, 우리가 아는 형태를 이용해서 이것이 날짜라는 것을 인식 시켜야 한다

엑셀이나 다른 프로그램에서도 일반적인 입력하는 방법과 실제 저장되는 형태를 생각해보면, 좀더 좋은 코드나 오류를 방지할 수가 있을 것으로 생각을 합니다

예를 들어서 엑셀에 날짜를 입력하면, 아래와 같은 일반적인 형태들을 볼수가 있습니다

word-image-1870-9.png

지금부터 생각해볼 것이, 우리가 3/1일로 입력한 셀을 역으로 읽어온다면, 어떤 값을 엑셀에서는 돌려주는지 생각해볼 필요가 있습니다. 그리고 공부하다가 알게된것중에 하나가 셀의 영역안에 나타낼 값이 다 표현이 되지 않을 때 #######의 형태로 나타나는 것을 아실수 있을 것 입니다

word-image-1870-10.png

결론적으로 말씀을 드리면, 엑셀에는 아래의 2가지 형태로 돌려주며, 자세한것은
  • 내부에 저장된 값을 돌려주는 것 (기본)
  • 보이는 그대로의 값을 돌려주는 것
밑에 좀더 자세히 설명 드리도록 하겠으니, 이런것이 있다고 생각해 보시면 좋을 듯 합니다

엑셀파일의 경로에 대하여

주요 함수 :

get_current_path()

뭔 일들을 다하고 나면, 파일을 저장해야 할때가 있읍니다. 그런데 기존의 파일만 다시 저장하면 경로나 그런 것이 필요없지만, 원하는 경로에 저장하고 싶다면, 원하는 경로를 얻어야 하는 것은 기본적인 사항입니다. 그래서 아래와같이 경로를 확인하는 코드를 한번 만들어 보았습니다. 보통 파일의 경로를 알려고 하는 목적은 같은 장소의 다른 파일을 읽어오거나 프린트시에 이름을 넣는 등의 목적에 사용을 합니다

경로를 확인할 경우가 가끔 생기니 아래의 방법을 사용해 보시기를 바랍니다

# -*- coding: utf-8 -*-
import pcell

excel=pcell.pcell()
file_path = excel.get_current_path()
print("파일경로는 ==> ", file_path)

word-image-1870-11.png

단, 가끔 경로를 나타내는 \와/가 속을 썩이는 경우도 있으니 참고하시기 바랍니다

엑셀파일 경로와 이름 읽어오기

주요 함수 :

get_current_path()

read_filename_for_activeworkbook()

# -*- coding: utf-8 -*-
import pcell
excel = pcell.pcell()

file_path = excel.get_current_path()
print("파일경로는 ==> ", file_path)

aaa = excel.read_filename_for_activeworkbook()
print(aaa)

word-image-1870-12.png

word-image-1870-13.png

 

함수의 이름에 대하여
Action 무엇을 / 대상 전치사 대상 option
add 작은것 in 큰것 없음   with (속성)
change 대상물 to   by 기준
check all 대상물 for (어떤 객체의 속성을 사용할 때)   except
copy / cut / paste same 대상물 from   at 위치
count 작은것 of 큰것     as 추가속성
delete       between a and b
draw       set on 속성
find       over 어떤것 이상
get       when 다른조건
insert        
is        
lock / unlock        
merge / unmerge        
make        
move        
multi        
new        
paint        
print        
read        
search        
select        
set        
setup        
sort        
split        
vlookup        
write        
 

 

 
전체 0

전체 35
번호 제목 작성자 작성일 추천 조회
공지사항
pcell이란 무엇인가 (python + win32com + excel)
sjpark | 24.08.17 | 추천 0 | 조회 134
sjpark 24.08.17 0 134
공지사항
pcell의 기본 사용법
sjpark | 24.08.17 | 추천 0 | 조회 174
sjpark 24.08.17 0 174
33
pcell(기초) – 삭제 - 같은 자료 삭제 – 033
sjpark | 24.12.07 | 추천 0 | 조회 13
sjpark 24.12.07 0 13
32
pcell(기초) – 삭제 - n번마다 삭제
sjpark | 24.12.06 | 추천 0 | 조회 14
sjpark 24.12.06 0 14
31
pcell(기초) – 삭제 - 영역의 값 삭제
sjpark | 24.12.04 | 추천 0 | 조회 13
sjpark 24.12.04 0 13
30
pcell(기초) – 삭제 - 이름영역 삭제
sjpark | 24.12.04 | 추천 0 | 조회 13
sjpark 24.12.04 0 13
29
pcell(기본) - 값의 여러 형태
sjpark | 24.12.02 | 추천 0 | 조회 16
sjpark 24.12.02 0 16
28
pcell(기본) - 날짜에 대한 생각
sjpark | 24.12.02 | 추천 0 | 조회 15
sjpark 24.12.02 0 15
27
pcell 예제 : 각 라인에서 값이 제일 큰 값과 작은 값 에 색칠하기
sjpark | 24.11.23 | 추천 0 | 조회 28
sjpark 24.11.23 0 28
26
pcell 기본 : 파일 경로와 이름 읽어오기
sjpark | 24.11.18 | 추천 0 | 조회 41
sjpark 24.11.18 0 41
25
pcell 기본 : 열린 모든 엑셀파일 이름 읽어오기
sjpark | 24.11.18 | 추천 0 | 조회 35
sjpark 24.11.18 0 35
24
pcell 기본 : 활성화된 시트와 모든 시트이름 읽어오기
sjpark | 24.11.18 | 추천 0 | 조회 34
sjpark 24.11.18 0 34
23
pcell_event : 이벤트 등록으로 특정영역의 값이 바뀌면 statusbar에 그 값을 쓰기
sjpark | 24.08.25 | 추천 0 | 조회 142
sjpark 24.08.25 0 142
22
엑셀자동화 : 새로운 파일 열어, 값 입력후, 저장하고, 종료하기
sjpark | 24.08.17 | 추천 0 | 조회 111
sjpark 24.08.17 0 111