# ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ๋ฐฉ๋ฒ• (์ฃผ์†Œ๋กœ ๋ฐ”๋กœ ์ ‘๊ทผ)
from openpyxl import load_workbook

path = "output.xlsx"
wb = load_workbook(path)
ws = wb["log_20250818_(1)"]          # ์‹œํŠธ ์ด๋ฆ„

ws["G2"].value = 3.1415              # G2 ์…€ ๊ฐ’ ๋ณ€๊ฒฝ
ws.cell(row=5, column=2, value="OK") # B5 ์…€ ๊ฐ’ ๋ณ€๊ฒฝ
wb.save(path)

# ํ—ค๋” ์ด๋ฆ„ ๊ธฐ์ค€์œผ๋กœ ์—ด์„ ์ฐพ์•„์„œ ํŠน์ • ํ–‰/์—ด ์ˆ˜์ •
from openpyxl import load_workbook

path = "output.xlsx"
sheet_name = "log_20250818_(1)"
target_header = "value"  # ์ˆ˜์ •ํ•  ์ปฌ๋Ÿผ ํ—ค๋”
target_row = 10          # ์ˆ˜์ •ํ•  ํ–‰ ์ธ๋ฑ์Šค (ํ—ค๋”=1ํ–‰ ๊ธฐ์ค€)

wb = load_workbook(path)
ws = wb[sheet_name]

# 1ํ–‰ ํ—ค๋”์—์„œ ์—ด ์œ„์น˜ ์ฐพ๊ธฐ
col_idx = None
for cell in ws[1]:
    if cell.value == target_header:
        col_idx = cell.column           # 1-based index
        break

if col_idx is None:
    raise ValueError(f"ํ—ค๋” '{target_header}' ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.")

ws.cell(row=target_row, column=col_idx, value=123.456)
wb.save(path)

# ๋งˆ์ง€๋ง‰ ํ–‰(๋‹ค์Œ ๋นˆ ํ–‰) ์ฐพ์•„์„œ ์“ฐ๊ธฐ
row = ws.max_row + 1
ws.cell(row=row, column=1, value="์ƒˆ ์นด์šดํŠธ")
ws.cell(row=row, column=2, value="2025-08-18 17:40:00")
wb.save(path)

# ์‹œํŠธ๊ฐ€ ์—†์œผ๋ฉด ๋งŒ๋“ค๊ธฐ
if "log_20250818_(1)" not in wb.sheetnames:
    ws = wb.create_sheet("log_20250818_(1)")
else:
    ws = wb["log_20250818_(1)"]
๋ฐ˜์‘ํ˜•
  • ๋„ค์ด๋ฒ„ ๋ธ”๋Ÿฌ๊ทธ ๊ณต์œ ํ•˜๊ธฐ
  • ๋„ค์ด๋ฒ„ ๋ฐด๋“œ์— ๊ณต์œ ํ•˜๊ธฐ
  • ํŽ˜์ด์Šค๋ถ ๊ณต์œ ํ•˜๊ธฐ
  • ์นด์นด์˜ค์Šคํ† ๋ฆฌ ๊ณต์œ ํ•˜๊ธฐ

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."