Python for Excel
(feat.openpyxl)
๐ก Release Version Information
Python 3.7.0
openpyxl 2.5.4
Visual Studio Code 1.24.1
๐ ํ์ด์ฌ์์ ์์ ๋ฐ์ดํฐ๋ฅผ ํธ๋ค๋งํ๊ธฐ ์ํด์๋ openpyxl, xlrd, xlrw ๋ฑ์ ์ธ๋ถ ํจํค์ง๋ฅผ ์ค์นํด์ ์ฌ์ฉํ๋ค.
์ฌ๊ธฐ ์๋ openpyxl ํจํค์ง๋ฅผ ์๋์ ๊ฐ์ด ์ค์นํ์ฌ ์ฌ์ฉํ๋ค.
pip install openpyxl
๐ ์์ ์ ๋ค๋ฃจ๋ ๊ฐ์ฅ ๊ธฐ์ด์ ์ธ ๋ถ๋ถ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๋ ๋์์ด๋ฏ๋ก ์์ ํ์ผ์ ์ด๊ณ ๊ทธ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ๋ช ๊ฐ์ ๋ฐ์ดํ๋ฅผ ์ฐ๋ ๋์์ ์ดํด ๋ณธ๋ค. ์์ ์ ๋ ฅ ํ์ผ์ ์๋์ ๊ฐ๋ค๊ณ ๊ฐ์ ํ๊ณ , ๋นจ๊ฐ ๋ฐ์ค ๋ถ๋ถ์ ํฉ๊ณ๋ฅผ ์ถ๊ฐํด์ผ ํ๋ ๋ถ๋ถ์ด๋ค.
import openpyxl
# ์์
ํ์ผ ์ด๊ธฐ
wb = openpyxl.load_workbook('score.xlsx')
#ํ์ฌ Active Sheet ์ป๊ธฐ
ws = wb.active
# ws = wb.get_sheet_by_name("Sheet1")
#์ ์๋ฅผ ์ฝ๊ธฐ
for r in ws.rows:
row_index = r[0].row # ํ ์ธ๋ฑ์ค
kor = r[1].value
eng = r[2].value
math = r[3].value
sum = kor + eng + math
# ํฉ๊ณ ์ฐ๊ธฐ
ws.cell(row = row_index, column = 5).value = sum
print(kor, eng, math, sum)
# ์์
ํ์ผ ์ ์ฅ
wb.save("score2.xlsx")
wb.close()
๋จผ์ ์์
ํ์ผ์ ์คํํ๊ธฐ ์ํด openpyxl.load_workbook(์์
ํ์ผ๋ช
)
ํจ์๋ฅผ ํธ์ถํ์ฌ Workbook ๊ฐ์ฒด๋ฅผ ์ป๋๋ค.
ํ๋์ Workbook ์๋ ์ฌ๋ฌ ๊ฐ์ Worksheet ๋ค์ด ์๋๋ฐ ํต์ ๊ธฐ๋ณธ์ผ๋ก Sheet1, Sheet2, Sheet3 ๋ฑ 3๊ฐ์ ์ํฌ์ํธ๋ฅผ ์์ฑํ๋ค.
์์
ํ์ผ์ ์ด๋ช
๋ณดํต ์ฒซ ๋ฒ์งธ ์ํธ๊ฐ Active Sheet๊ฐ ๋๋ฏ๋ก Worksheet ๊ฐ์ฒด์ active ๋ฅผ ํตํด ํ์ฌ ์ํฌ์ํธ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ง๋ง, ์์
์ ์ ์ฅ์ ๋ง์ง๋ง์ ์ ํ๋ ์ํธ๋ฅผ Active Sheet๋ก ํ๋ฏ๋ก, wb.get_sheet_by_name(์ํธ๋ช
)
์ ์ฌ์ฉํ๋ ๊ฒ์ด ์์ ํ๋ค.
ํน์ cell ์ ๊ฐ์ ์ง์ ํ๊ธฐ ์ํด cell.value ์ ๊ฐ์ ๋ฃ์ผ๋ฉด ๋๋๋ฐ ์ํธ์์ cell์ ์ง์ ํ๊ธฐ ์ํด ws["A1"] ๊ณผ ๊ฐ์ด ์์
์ cell ์ง์ ๋ฒ์ ์ฌ์ฉํ ์ ์๊ณ , ํ์ด ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ws.cell(row=ํ ์ธ๋ฑ์ค, column=์ด ์ธ๋ฑ์ค)
ํํ์ ์ฌ์ฉํ ์๋ ์๋ค.
์์
์ ๋ณ๊ฒฝ ๋ด์ฉ์ ์ ์ฅํ๊ธฐ ์ํด์๋ Workbook
๊ฐ์ฒด์์ save()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์์
์ฌ์ฉ์ด ๋ชจ๋ ๋๋ ๊ฒฝ์ฐ close()
๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
from openpyxl import Workbook
wb = Workbook()
ws1 = wb.active # ํ์ฌ ์ด๋ ค ์๋ Sheet
ws1.title = "first_Sheet" # ์ํธ ws1์ ์ผ๋ฆ์ ์ง์
ws1["A1"] = "Hello world" # ์
A1์ ์
๋ ฅ
print(ws1["A1"].value) # ์
A1์ ๋ด์ฉ ์ถ๋ ฅ
wb.save("D:/workspace/Python/Python37/Python-Openpyxl-App/test.xlsx") # ์ ์ฅ
์ ์ฝ๋๋ฅผ ์คํํ๊ณ ์ ์ฅ๋ ํ์ผ์ ์ด์ด๋ณด๋ฉด A1 ์ ์ Hellow World ๋ผ๊ณ ์ฐ์ฌ์ ธ ์์ ๊ฒ์ด๋ค.
from openpyxl import load_workbook
wb = load_workbook("D:/workspace/Python/Python37/Python-Openpyxl-App/test.xlsx")
ws2 = wb.create_sheet(title = "second_Sheet")
for row in range(1, 10):
for col in range(1, 10):
ws2.cell(row = row, column = col, value = int("{}{}".format(row, col)))
wb.save("D:/workspace/Python/Python37/Python-Openpyxl-App/test.xlsx")
๊ฒฐ๊ณผ
import datetime
from openpyxl import load_workbook
wb = load_workbook("D:/workspace/Python/Python37/Python-Openpyxl-App/test.xlsx")
ws = wb.active
ws['A4'] = "=SUM(10,20,30)"
wb.save("D:/workspace/Python/Python37/Python-Openpyxl-App/test.xlsx")
import datetime
from openpyxl import load_workbook
wb = load_workbook("D:/workspace/Python/Python37/Python-Openpyxl-App/test.xlsx")
ws = wb.active
ws.merge_cells("A1:B1")
ws.merge_cells(start_row=2, start_column=1, end_row=2, end_column=2)
wb.save("D:/workspace/Python/Python37/Python-Openpyxl-App/test.xlsx")
[Python] Django Project ํ๊ฒฝ ๊ตฌ์ถ(feat.venv) (0) | 2018.07.11 |
---|---|
Python web crawler (0) | 2018.07.05 |
[Python] Zip Cracker (0) | 2018.04.09 |
[Python] Django ํ์ผ ์ฌ์ฉํ๊ธฐ (0) | 2017.08.16 |
[Pyhton] Django ๊ฒฐ๊ณผ๋ณด๊ธฐ/404์ค๋ฅ/ํ ํ๋ฆฟ ์์/๋ค๋น๊ฒ์ด์ ๋ฐ (0) | 2017.08.16 |