
Excel은 이제 손으로 편집하지 않는다. Claude Code + OfficeCLI에 맡기기만 하면 된다
요약
Claude Code와 OfficeCLI를 결합하여 Excel 작업을 자동화하는 방법을 소개합니다. OfficeCLI는 AI 에이전트용으로 설계된 CLI 도구로, Excel 파일을 열지 않고도 수식 계산과 데이터 편집을 수행할 수 있습니다.
핵심 포인트
- OfficeCLI는 AI 에이전트가 Excel을 조작하기 최적화된 오픈 소스 도구임
- Claude Code와 연동하여 별도의 Python 스크립트 없이 명령어만으로 Excel 편집 가능
- 파일을 직접 열지 않아도 OfficeCLI가 즉시 수식 계산을 완료함
- Claude Code 내 플러그인 설치를 통해 간편하게 환경 구축 가능
매달 반복되는 집계표 작성이나 포맷 재정리 등, 정형화된 Excel 작업이 일상적으로 발생하여 솔직히 계속 번거롭다고 생각하고 있었습니다. 코드는 Claude Code에 맡길 수 있는데, Excel만은 제 손으로 직접 편집하고 있었습니다. 이 상황을 해결할 수 있을 것 같은 도구를 발견하여, 실제로 시도해 본 결과를 정리합니다.
OfficeCLI는 Word / Excel / PowerPoint 파일을 커맨드 라인(Command Line)에서 읽고 쓸 수 있는, AI 에이전트(AI Agent)를 위해 설계된 오픈 소스 CLI 도구입니다. 이 기사에서는 Excel(xlsx)에 집중하여, Claude Code와 조합했을 때 무엇을 할 수 있는지 실제로 구동하며 확인해 보겠습니다.
결론부터 말씀드리면, 가장 놀라웠던 점은 수식(Formula) 처리입니다. 보통 프로그램에서 xlsx에 수식을 써넣어도 실제로 계산되는 것은 Excel 파일을 열었을 때입니다. OfficeCLI는 써넣는 즉시 계산까지 완료하므로, Excel을 한 번도 열지 않고도 합계 값을 확인할 수 있습니다.
검증 환경은 다음과 같습니다.
- OfficeCLI 1.0.136
- macOS (Apple Silicon)
- Claude Code 2.1.212
- 2026년 7월 시점
GitHub에서 18,000개 이상의 스타(Star)를 기록 중인(2026년 7월 시점) 기세 좋은 도구로, 특징을 나열하면 다음과 같습니다.
| 특징 | 내용 |
|---|---|
| 단일 바이너리 (Single Binary) | Office 설치 불필요. macOS / Linux / Windows 대응 |
| ... | /시트명/A1과 같이 셀을 경로로 지정 |
| JSON 출력 | 모든 명령어가 --json 대응 |
| 렌더링 (Rendering) | xlsx를 HTML·스크린샷으로 그릴 수 있음 |
| 로컬 완결 (Local-only) | 파일 생성·편집이 로컬 머신에서 완결 (OfficeCLI 자체는 외부로 파일을 보내지 않음) |
| 라이선스 | Apache 2.0 |
"AI 에이전트용"이라는 점이 포인트이며, 출력이 구조화되어 있고 실행 결과를 AI 스스로 확인할 수 있도록 설계되어 있습니다.
Claude Code에게 Excel 조작을 시키는 수단으로는, 지금까지 "openpyxl의 Python 스크립트를 작성하게 하여 실행하는" 패턴이 정석이었습니다. 라이브러리와 CLI 도구이므로 엄밀히 말하면 영역이 다르지만, "Claude Code에게 Excel을 다루게 하는 수단"으로 비교하면 다음과 같습니다.
| openpyxl | OfficeCLI |
|---|---|
| 조작 방법 | Python 스크립트를 작성하여 실행 |
| ... |
참고로 OfficeCLI 자체는 로컬에서 완결되지만, Claude Code가 읽어들인 셀 값이나 실행 결과는 LLM과의 통신을 통해 외부로 전송됩니다. 기밀 데이터를 다룰 경우에는 이용 플랜의 데이터 보유 정책이나 조직의 규칙을 먼저 확인하시기 바랍니다.
Claude Code 상에서 다음 두 가지를 실행하기만 하면 됩니다 (공식 Claude Code용 페이지에서 안내하는 절차입니다).
/plugin marketplace add officecli/officecli
/plugin install officecli@officecli
이렇게 하면 OfficeCLI의 스킬이 Claude Code에 포함되어, officecli 명령어 사용법을 파악한 상태가 됩니다. CLI 본체를 사전에 설치해 둘 필요는 없습니다. 실제로 이번 검증에서는 officecli를 설치하지 않은 상태에서 시작했지만, Claude Code가 npx를 통해 알아서 실행해 주었습니다.
전제 조건으로 Claude Code와 Node.js를 사용할 수 있어야 합니다 (officecli는 npm 패키지로 배포되며, 첫 npx 실행 시에는 패키지 취득을 위해 네트워크 연결이 필요합니다).
셋업이 완료되었다면, 그다음은 자연어로 부탁하기만 하면 됩니다.
- "이 CSV를 Excel로 만들고, 금액 열과 합계를 추가해줘"
- "sales.xlsx에 담당자×상품 피벗 테이블(Pivot Table)을 별도 시트로 만들어줘"
- "이 xlsx의 내용을 확인하고, 이상한 셀이 있으면 고쳐줘"
Claude Code가 배후에서 officecli 명령어를 조합하여 실행하고, 결과를 JSON으로 읽어 다음 조작을 판단하는 흐름이 됩니다. 도식화하면 다음과 같습니다.
이 예시에서는 인간이 관여하는 것은 최초의 의뢰와 마지막 보고뿐입니다. 중간의 정형화된 조작과 수치 확인은 Claude Code와 OfficeCLI 사이에서 완결됩니다.
Claude Code가 구성하는 officecli 명령어 중 Excel 조작에서 자주 사용되는 것들을 나열해 보겠습니다. 외울 필요는 없습니다. 다만, Claude Code가 배후에서 무엇을 하고 있는지 읽을 수 있다면, 의뢰의 정밀도와 확인 속도도 올라갑니다.
| 명령어 | 내용 |
|---|---|
create | 빈 xlsx 파일을 신규 생성 |
import | CSV/TSV를 시트에 가져오기 |
view | text / html / screenshot 등으로 내용 표시 |
get | 셀이나 시트의 정보 취득 |
set | 셀의 값·수식·서식 변경 |
add | 시트·피벗 테이블·그래프 등을 추가 |
remove | 요소 삭제 |
query | CSS 스타일의 셀렉터로 검색 (예: cell[formula]) |
batch | 여러 조작을 JSON으로 일괄 실행 |
merge | 템플릿의 {{key}}를 데이터로 치환 |
watch | 브라우저에서 라이브 프리뷰 |
셀은 /시트명/A1 , 범위는 /시트명/B2:C3 라는 경로로 지정합니다. 파일 시스템의 경로와 같은 감각으로 셀을 다룰 수 있기 때문에, AI에게도 명령어를 구성하기 쉬운 구조입니다.
매출 데이터 CSV로부터 Excel 집계표를 만드는, 라는 전형적인 작업을 Claude Code에게 의뢰합니다. 여기서부터 다음에 나오는 officecli 명령어는 제가 입력한 것이 아닙니다. 의뢰를 받은 Claude Code가 스스로 구성하여 실행한 것입니다. 인간이 하는 것은 일본어(한국어)로 부탁하는 것뿐입니다.
sales.csv를 읽어서, 「매출 데이터」 시트를 가진 sales.xlsx를 만들어줘
가지고 있는 sales.csv의 내용은 이것뿐입니다 (가상의 매출 데이터 8행). 재현하고 싶은 분은 이것을 복사하세요.
日付,担当,商品,数量,単価
2026-07-01,佐藤,ライセンスA,3,50000
2026-07-01,鈴木,ライセンスB,1,120000
...
Claude Code가 실행한 명령어는 다음과 같았습니다.
officecli create sales.xlsx
officecli add sales.xlsx / --type sheet --prop name="売上データ"
officecli import sales.xlsx /売上データ sales.csv
Imported 9 rows x 5 cols into /売上データ starting at A1
이어서 Claude Code는, view text로 가져오기 결과를 스스로 확인합니다.
officecli view sales.xlsx text
=== Sheet: 売上データ ===
[/売上データ/row[1]] A1=日付 B1=担当 C1=商品 D1=数量 E1=単価
[/売上データ/row[2]] A2=2026-07-01 B2=佐藤 C2=ライセンスA D2=3 E2=50000
...
각 행의 선두에 경로가 붙어 있으므로, 이 출력을 본 Claude Code는 그대로 다음 조작 대상을 결정할 수 있습니다. 인간이 Excel을 열어서 "제대로 들어갔나" 하고 확인하는 공정은 발생하지 않습니다.
금액 열(수량×단가)과 합계를 추가해줘. 제목은 굵게
openpyxl로 Excel을 자동화해 본 적이 있는 사람이라면, "수식을 쓸 수는 있어도 계산 결과는 파일을 열 때까지 알 수 없지 않나"라고 생각할지도 모릅니다. 저도 그렇게 생각했습니다.
Claude Code는 여러 셀에 대한 조작을 batch로 묶어서 실행했습니다.
officecli set sales.xlsx /売上データ/F1 --prop value=金額 --prop bold=true
officecli batch sales.xlsx --commands '[
{"command":"set","path":"/売上データ/F2","props":{"formula":"D2*E2"}},
...
이 부분이 OfficeCLI의 재미있는 점인데, 수식은 작성하는 순간 평가됩니다. Claude Code는 get으로 계산 결과까지 확인한 후 "합계는 950,000입니다"라고 보고해 왔습니다 (출력은 관련 필드만 발췌했습니다).
officecli get sales.xlsx /売上データ/H2 --json
{
"path": "/売上データ/H2",
"type": "cell",
...
Excel에서 파일을 열지 않고도, SUM(F2:F9)의 계산 결과인 950000이 그 자리에서 반환되었습니다. 수식을 써넣을 수는 있지만 스스로 계산하지는 않는 openpyxl과는 이 점이 결정적으로 다릅니다. AI가 "계산 결과를 확인하고 다음 동작을 결정한다"라는 루프를 Excel 없이도 돌릴 수 있는 것입니다.
담당자 × 상품별로 금액을 집계하는 피벗 테이블(Pivot Table)을 "집계" 시트에 만들어줘
피벗 테이블 생성은 add 명령어 하나로 가능합니다.
officecli add sales.xlsx / --type sheet --prop name=集計
officecli add sales.xlsx /集計 --type pivottable \
--prop source='売上データ!A1:F9' \
...
Added pivottable at /集計/pivottable[1]
view text로 확인하면, 집계값까지 계산된 상태로 나타납니다 (출력은 발췌).
=== Sheet: 集計 ===
[/集計/row[2]] H2=담당 I2=라이선스A J2=라이선스B K2=유지보수서포트 L2=Grand Total
[/集計/row[3]] H3=사토 I3=150000 K3=180000 L3=330000
...
겉모습이 깨지지 않았는지 스크린샷으로 체크해줘
view <file> screenshot을 실행하면 xlsx 파일이 PNG로 렌더링됩니다.
officecli view sales.xlsx screenshot
# => 임시 디렉토리에 PNG 경로가 출력됨
[IMG:1] (열 너비 수정 전)
일본어 셀 값, 굵게 표시된 헤더, 시트 탭까지 Excel답게 재현되어 있습니다. 다만, 자세히 보니 날짜, 상품명, 금액이 2026-0…, 라이…, 150…와 같이 잘려 있었습니다. 열 너비가 초기값 그대로였기 때문입니다. 그래서 추가로 요청합니다.
날짜나 상품명, 금액이 잘려 있어. 열 너비를 수정해서 다시 보여줘
Claude Code가 col의 width를 다시 설정하고, 스크린샷을 다시 생성해 주었습니다.
officecli batch sales.xlsx --commands '[
{"command":"set","path":"/売上データ/col[A]","props":{"width":"16"}},
{"command":"set","path":"/売上データ/col[C]","props":{"width":"14"}},
...
[IMG:2] (열 너비 수정 후)
이번에는 모든 값을 읽을 수 있습니다. 한 번에 완벽한 레이아웃이 나오는 것은 아니며, 열이 잘린 것을 알아챈 것도 인간인 저였지만, Excel을 열지 않고 "여기 잘렸어, 수정해줘"라고 말해 수정 프로세스를 돌릴 수 있다는 점은 매우 편리합니다. 수정이 잘 되었는지 확인하는 작업은 스크린샷을 읽을 수 있는 Claude Code 자신에게 맡길 수도 있습니다. 즉, "만들게는 했는데 열어보니 깨져 있었다"라는 상황을 Excel을 열기 전에 미리 해결할 수 있는 것입니다.
이 북(Book)에서 어떤 셀에 수식이 들어있는지 목록으로 만들어줘
이러한 조사형 요청에는 CSS 스타일의 셀렉터로 검색할 수 있는 query가 사용됩니다 (출력은 주요 필드만 발췌).
officecli query sales.xlsx 'cell[formula]'
/売上データ/F2 (cell) "150000" formula=D2*E2 computedValue=150000 evaluated=true
/売上データ/H2 (cell) "950000" formula=SUM(F2:F9) computedValue=950000 evaluated=true
(이하 생략)
직접 만든 북뿐만 아니라, 타인으로부터 인계받은 xlsx 파일을 조사할 때도 유용할 것 같습니다. 담당자가 이동하여 아무도 구조를 모르는 북이나, 어디가 수동 입력이고 어디가 수식인지 알 수 없는 북의 내용을 Claude Code에게 조사해달라고 할 수 있습니다. 소소해 보이지만, 이것이 가장 도움이 되는 활용법일지도 모릅니다.
의뢰를 수행하는 동안 Claude Code가 두 번의 에러를 겪었습니다. 하나는 README와 구현 내용의 차이 때문이었고, 다른 하나는 Claude Code 자체의 명령어 추측 실수 때문입니다 (v1.0.136 시점. 최신 버전인 v1.0.137에서도 동작은 동일했습니다). 두 경우 모두 스스로 복구(recovery)했기 때문에 인간의 개입은 필요하지 않았지만, 이를 알고 있으면 상황이 이상할 때 지시를 내리기가 더 쉬워집니다.
아울러, 에러는 아니지만 모르면 당황할 수 있는 사양(specification)이 하나 있어서 그것도 적어두겠습니다.
Claude Code가 README의 예시(add --type sheet --prop csv=sales.csv)대로 실행했을 때, 에러가 발생했습니다.
UNSUPPORTED props: csv (did you mean: cx?)
정답은 전용 import 명령어입니다. Claude Code도 여기서 한 번 에러가 났지만, 도움말(help)을 다시 확인하여 스스로 import에 도달했습니다.
이것은 README의 잘못이 아니라 Claude Code 측의 추측 실수입니다. README의 "PNG로 렌더링할 수 있다"라는 기술을 보고, Claude Code는 모드(mode) 이름을 png라고 추측하여 실행했다가 에러가 발생했습니다 (올바른 모드 이름인 screenshot은 README에 적혀 있습니다).
Error: Unknown mode: png. Available: text, annotated, outline, stats, issues, html, svg, screenshot, forms
에러 메시지에 사용 가능한 모드가 모두 나열되기 때문에, Claude Code는 즉시 screenshot으로 전환했습니다.
이것은 에러가 아니라 도움말에 명시되어 있는 사양입니다. OfficeCLI는 고속화를 위해 한 번 건드린 파일을 상주 프로세스(resident process)가 메모리에 계속 유지합니다. 이 때문에 Claude Code가 편집한 직후에 Excel로 열면, 변경 전의 내용이 보일 수 있습니다.
유휴(idle) 상태가 되면 2~10초 내에 자동으로 플러시(flush)되므로 그대로 두어도 반영은 되지만, 바로 열고 싶을 때는 "저장하고 닫아줘"라고 한마디 부탁하면 Claude Code가 officecli close (디스크 쓰기 + 상주 프로세스 종료)를 실행해 줍니다.
- OfficeCLI를 사용하면 Claude Code가 Excel 파일을 직접 조작할 수 있게 된다
- 수식은 쓰기 시점에 자동으로 평가되며, 피벗 테이블(pivot table)도 명령어 하나로 만들 수 있다
view text로 수치를,screenshot으로 외관을 확인할 수 있어 "만들어 놓기만 하고 방치"하게 되지 않는다- README의 오래된 예시나 명령어 추측 실수로 에러가 발생할 수는 있지만, Claude Code는 에러 메시지를 읽고 스스로 복구한다
정형화된 Excel 작업을 안고 있는 분들은 플러그인을 설치하고 "이 CSV를 집계표로 만들어줘"라고 부탁하는 것부터 시도해 보세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기