์๋ ํ์ธ์! ๋ฐ์ดํฐ ์๋ํ์ ๊ด์ฌ ์๋ ์ด๋ณด ํ๋ก๊ทธ๋๋จธ ์ฌ๋ฌ๋ถ! ๐ ์ค๋์ ํ์ด์ฌ์ ์ด์ฉํด์ ์์ ํ์ผ์ ๋ค๋ฃจ๋ ์์ฃผ ์ ์ฉํ๊ณ ์ฌ๋ฏธ์๋ ๋ฐฉ๋ฒ์ ์๋ ค๋๋ฆด๊ฒ์. ์์ ์์ ์ ์๋์ผ๋ก ์ฒ๋ฆฌํ๋ฉด ์๊ฐ ์ ์ฝ์ ๋ฌผ๋ก ์ด๊ณ , ์นผํด์ ๊ธฐํ๊น์ง ์ป์ ์ ์๋ต๋๋ค! ๐
ํ์ด์ฌ์์ ์์
์ ๋ค๋ฃจ๋ ๋ฐ๋ ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ง๋ง, ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๊ณ ์ด๋ณด์์๊ฒ๋ ์ฌ์ด **OpenPyXL**์ ์ค์ฌ์ผ๋ก ์์ ๋ฅผ ์ดํด๋ณผ ๊ฑฐ์์. ์ค์น๋ถํฐ ๋ฐ์ดํฐ ์ฝ๊ณ ์ฐ๊ธฐ๊น์ง, ์ฐจ๊ทผ์ฐจ๊ทผ ๋ฐ๋ผ์ ๋ณด์ธ์! ๐
1. OpenPyXL ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์นํ๊ธฐ ๐ ️
ํ์ด์ฌ์ ๊ฐ๋ ฅํจ์ ์๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๋์ต๋๋ค. OpenPyXL์ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ ์ค์น๋ฅผ ํด์ผ๊ฒ ์ฃ ? ํฐ๋ฏธ๋(๋ช ๋ น ํ๋กฌํํธ ๋๋ PowerShell)์ ์ด๊ณ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ฃผ์ธ์.
pip install openpyxl
์ค์น๊ฐ ์๋ฃ๋๋ฉด ์ด์ ์์ ํ์ผ ๋ง๋ฒ์ ๋ถ๋ฆด ์ค๋น ๋! ✨
2. ์ ์์ ํ์ผ ์์ฑํ๊ณ ๋ฐ์ดํฐ ์ฐ๊ธฐ ✍️
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์์ ๋ถํฐ ์์ํด๋ด ์๋ค. ํ์ด์ฌ ์ฝ๋๋ฅผ ์ด์ฉํด ์๋ก์ด ์์ ํ์ผ์ ๋ง๋ค๊ณ , ์ํ๋ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ ํ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๐ก ์์ 1: ๊ฐ๋จํ ํ์ผ ์์ฑ ๋ฐ ๋ฐ์ดํฐ ์ ๋ ฅ
import openpyxl
# 1. ์๋ก์ด ์ํฌ๋ถ(์์
ํ์ผ) ์์ฑ
wb = openpyxl.Workbook()
# 2. ํ์ฌ ํ์ฑํ๋ ์ํฌ์ํธ(์ํธ) ์ ํ
ws = wb.active
# ๊ธฐ๋ณธ ์ํธ ์ด๋ฆ์ 'Sheet'์
๋๋ค.
# 3. ์
์ ๋ฐ์ดํฐ ์
๋ ฅํ๊ธฐ
# A1 ์
์ 'ํ์ด์ฌ' ์
๋ ฅ
ws['A1'] = 'ํ์ด์ฌ'
# B2 ์
์ '์์
์๋ํ' ์
๋ ฅ
ws['B2'] = '์์
์๋ํ'
# C3 ์
์ ์ซ์ 100 ์
๋ ฅ (์ซ์, ๋ ์ง ๋ฑ ๋ค์ํ ๋ฐ์ดํฐ ํ์
๊ฐ๋ฅ)
ws.cell(row=3, column=3, value=100) # row์ column ์ธ๋ฑ์ค๋ก๋ ์ ๊ทผ ๊ฐ๋ฅ
# 4. ํ์ผ ์ ์ฅํ๊ธฐ
wb.save("์ด๋ณด์_ํ
์คํธ.xlsx")
print("์์
ํ์ผ์ด ์ฑ๊ณต์ ์ผ๋ก ์ ์ฅ๋์์ต๋๋ค! ✅")
์ด๋ ๊ฒ ํ๋ฉด ์ด๋ณด์_ํ
์คํธ.xlsx๋ผ๋ ํ์ผ์ด ์์ฑ๋๊ณ , ์ง์ ๋ ์
์ ๋ฐ์ดํฐ๊ฐ ์
๋ ฅ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ๐ฅณ
3. ๋ฆฌ์คํธ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ์ ๋ ฅํ๊ธฐ (append) ๐
๋ฐ๋ณต๋ฌธ๊ณผ ๋ฆฌ์คํธ๋ฅผ ํ์ฉํด์ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ํจ์จ์ ์ผ๋ก ์
๋ ฅํ๋ ๋ฐฉ๋ฒ์ ์์๋ด
์๋ค. append() ๋ฉ์๋๋ ๋ฆฌ์คํธ๋ ํํ ํํ์ ๋ฐ์ดํฐ๋ฅผ ์ํฌ์ํธ์ ๊ฐ์ฅ ๋ง์ง๋ง ํ์ ์์๋๋ก ์ถ๊ฐํด์ค๋๋ค.
๐ก ์์ 2: ์ฌ๋ฌ ํ ๋ฐ์ดํฐ ์ ๋ ฅ
import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
# ๋ฐ์ดํฐ ๋ฆฌ์คํธ (ํ ๋จ์๋ก ์
๋ ฅ๋ ๋ฐ์ดํฐ)
data = [
('์ด๋ฆ', '๋์ด', '์ง์
'), # ์ฒซ ํ (ํค๋)
('๊น๋ฏผ์', 28, '๊ฐ๋ฐ์'),
('๋ฐ์ง์', 32, '๋์์ด๋'),
('์ดํ์ฐ', 25, '๋ง์ผํฐ')
]
# for ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์
๋ ฅ
for row_data in data:
ws.append(row_data) # ๋ง์ง๋ง ํ์ ์ถ๊ฐ
# ํ์ผ ์ ์ฅ
wb.save("์ง์_๋ฆฌ์คํธ.xlsx")
print("์ง์ ๋ฆฌ์คํธ ํ์ผ์ด ์ ์ฅ๋์์ต๋๋ค! ๐")
์ด ๋ฐฉ๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฐ์ ธ์จ ๊ฒฐ๊ณผ๋ ๋ค๋ฅธ ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ์์
๋ก ์ฎ๊ธธ ๋ ์์ฃผ ์ ์ฉํฉ๋๋ค. ws.append()๋ ๋ฐ์ดํฐ๋ฅผ ํ ๋จ์๋ก ์ถ๊ฐํ๋ค๋ ๊ฒ์ ๊ผญ ๊ธฐ์ตํด์ฃผ์ธ์!
4. ๊ธฐ์กด ์์ ํ์ผ ์ฝ๊ณ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ ๐
์ ํ์ผ์ ๋ง๋๋ ๊ฒ๋งํผ์ด๋ ๊ธฐ์กด ํ์ผ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ๊ฒ๋ ์ค์ํ์ฃ ! openpyxl.load_workbook() ํจ์๋ฅผ ์ฌ์ฉํด์ ๊ธฐ์กด ํ์ผ์ ๋ถ๋ฌ์ฌ ์ ์์ต๋๋ค.
๐ก ์์ 3: ํน์ ์ ๊ฐ ์ฝ๊ธฐ
import openpyxl
# 1. ๊ธฐ์กด ํ์ผ ๋ถ๋ฌ์ค๊ธฐ
try:
wb = openpyxl.load_workbook("์ด๋ณด์_ํ
์คํธ.xlsx")
except FileNotFoundError:
print("ํ์ผ์ ์ฐพ์ ์ ์์ต๋๋ค. ์ด๋ณด์_ํ
์คํธ.xlsx ํ์ผ์ ๋จผ์ ๋ง๋ค์ด์ฃผ์ธ์.")
exit()
# 2. ์ํ๋ ์ํฌ์ํธ ์ ํ (์ด๋ฆ์ผ๋ก ์ ๊ทผ)
ws = wb['Sheet'] # ๊ธฐ๋ณธ ์ํธ ์ด๋ฆ 'Sheet'
# 3. ์
์ ๊ฐ ์ฝ์ด์ค๊ธฐ
value_a1 = ws['A1'].value
value_c3 = ws.cell(row=3, column=3).value
print(f"A1 ์
์ ๊ฐ: {value_a1}")
print(f"C3 ์
์ ๊ฐ: {value_c3}")
# 4. ์ ์ฒด ๋ฐ์ดํฐ ํ/์ด ์ํํ๋ฉฐ ์ฝ๊ธฐ
print("\n--- ์ ์ฒด ๋ฐ์ดํฐ ์ฝ๊ธฐ ---")
# iter_rows()๋ ํ์ ์ํํ๋ฉฐ ์
๊ฐ์ฒด๋ฅผ ๋ฐํํฉ๋๋ค.
for row in ws.iter_rows():
row_values = [cell.value for cell in row]
print(row_values)
**.value**๋ฅผ ๋ถ์ฌ์ผ ์
์ ์ค์ ๋ก ์
๋ ฅ๋ ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ๋ง์ฝ .value๋ฅผ ๋ถ์ด์ง ์์ผ๋ฉด ์
๊ฐ์ฒด ์์ฒด๋ฅผ ๊ฐ์ ธ์ค๊ฒ ๋๋ ์ฃผ์ํ์ธ์! ⚠️
5. OpenPyXL ํต์ฌ ๊ฐ๋ ์ ๋ฆฌ ๐
| ๊ฐ๋ | ์ค๋ช | OpenPyXL ๊ฐ์ฒด | ๋น๊ณ |
| ์ํฌ๋ถ (Workbook) | ์์ ํ์ผ ์ ์ฒด (์ ์ฅ ๋จ์) | wb | openpyxl.Workbook() ๋๋ load_workbook()์ผ๋ก ์์ฑ |
| ์ํฌ์ํธ (Worksheet) | ์์ ํ์ผ ์์ ํ๋์ ์ํธ (Tab) | ws | wb.active ๋๋ wb['์ํธ์ด๋ฆ']์ผ๋ก ์ ๊ทผ |
| ์ (Cell) | ์ํฌ์ํธ์ ์ต์ ๋จ์ (๊ฐ ์ ๋ ฅ/์ฝ๊ธฐ) | cell | ws['A1'] ๋๋ ws.cell(row=1, column=1)๋ก ์ ๊ทผ |
๋ง๋ฌด๋ฆฌํ๋ฉฐ ๐
ํ์ด์ฌ OpenPyXL ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ๋ฉด ์์
์์
์ด ์ผ๋ง๋ ์ฌ์์ง๋์ง ๋ณด์
จ์ฃ ? ์ด ์์ ๋ค๋ง์ผ๋ก๋ ๊ฐ๋จํ ๋ณด๊ณ ์ ์์ฑ์ด๋ ๋ฐ์ดํฐ ์ ๋ฆฌ ์์
๋ฑ์ ์๋ํํ ์ ์์ต๋๋ค! ์ง๊ธ ๋ฐ๋ก ์ฌ๋ฌ๋ถ์ ์ปดํจํฐ์์ ์ง์ ์ฝ๋๋ฅผ ์คํํด๋ณด๋ฉด์ ํ์ด์ฌ๊ณผ ์์
์ ์๋์ง๋ฅผ ๊ฒฝํํด๋ณด์ธ์! ์ฝ๋ฉ์ ์ง์ ํด๋ณด๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ํ๋ต๋๋ค. ๐

๋๊ธ
๋๊ธ ์ฐ๊ธฐ