인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

histar76님의 프로필 이미지
histar76

작성한 질문수

직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피

[응용] 엑셀문서 값을 필드에 입력하기

한셀은 어떻게 하죠?

해결된 질문

작성

·

580

1

  • 강의 챕터 : [응용] 엑셀문서 값을 필드에 입력하기

  • 질문사항 : 저희 회사에서는 엑셀을 사용하지 않고 한셀을 사용하도록 하는데 그 때는 어떻게 하나요?

답변 1

1

일코님의 프로필 이미지
일코
지식공유자

다행히 한셀의 API 인터페이스는 엑셀과 거의 동일합니다.

image

기존 엑셀 사용자들에게 익숙한 느낌을 주기 위해

의도적으로 엑셀과 유사하게 인터페이스를 만들었다는 느낌인데요.

(저는 그 점이 마음에 듭니다.)

 

하여튼 위 영상에서 간단히 사용한 코드는,

import win32com.client as win32

hcell = win32.gencache.EnsureDispatch("HCell.Application")
#%%
hcell.Visible = True
#%%
hcell.Cells(1,1).Value = "Hello World!"
#%%
for i in range(2, 11):
    hcell.Cells(i, 1).Value = \
        f"Hello {i}!"
#%%

위와 같습니다.

 

다만 엑셀도 "엑셀프로그램 - 워크북 - 워크시트" 계층이 있듯이

한셀에도 아래와 같이 계층을 짜서 프로그래밍하시는 걸 권장합니다.

import win32com.client as win32

hcell = win32.gencache.EnsureDispatch(
    "HCell.Application"
)
#%% Visible 기본값은 False라서 실행해도 숨겨져 있습니다.
hcell.Visible = True

#%% 엑셀과 달리 한셀에서는 실행시점에 워크북 하나가 자동으로 만들어집니다.
wb = hcell.Workbooks(1)

#%% 워크시트도 하나 만들어져 있습니다.
ws = wb.Worksheets(1)

#%% 해당 워크시트의 Cells나 Range 등을 통해 입력하실 수 있습니다.
ws.Cells(1,1).Value = "Hello world!"

#%% 저장이나 닫기는 워크북 계층에서 실행하시면 됩니다.
wb.SaveAs("./hello.cell")
# 기본 저장 폴더 : home/Documents

한셀의 COM API 코드나 파일구조는 엑셀과 굉장히 유사하다는 장점(?)이 있어,

기타 응용프로그램이나 판다스 등에서 불러오는 방법도 엑셀과 동일합니다.

다만 openpyxl이나 xlwings 등의 엑셀 라이브러리를 사용하셔야 한다면

라이브러리 일부를 약간 수정해야 합니다.

대부분의 단순작업은 win32com으로 충분하므로

기존의 방법을 사용해보시는 것을 추천드립니다.

 

도움이 되었길 바랍니다.

행복한 하루 되세요^^

histar76님의 프로필 이미지
histar76

작성한 질문수

질문하기