> 백엔드 개발 > 파이썬 튜토리얼 > Python 사무 자동화, 5분 만에 Openpyxl 작업 마스터!

Python 사무 자동화, 5분 만에 Openpyxl 작업 마스터!

WBOY
풀어 주다: 2023-04-17 11:49:02
앞으로
892명이 탐색했습니다.

Python 사무 자동화, 5분 만에 Openpyxl 작업 마스터!

오늘은 openpyxl을 사용하여 Excel을 조작하는 방법에 대한 기사를 공유하겠습니다.

다양한 데이터를 엑셀로 가져와야 하나요? 여러 Excel을 병합하고 싶으십니까? 현재 Python에서 Excel 파일을 처리할 수 있는 라이브러리가 많이 있으며, openpyxl은 더 나은 기능과 성능을 갖춘 라이브러리 중 하나입니다. 다음으로 다양한 엑셀 작업을 소개해드리겠습니다.

1. Excel 파일 열기

새 Excel 파일 만들기

>>> from openpyxl import Workbook
>>> wb = Workbook()
로그인 후 복사

기존 Excel 파일 열기

>>> from openpyxl import load_workbook
>>> wb2 = load_workbook('test.xlsx')
로그인 후 복사

대용량 파일을 열 때 필요에 따라 읽기 전용 또는 쓰기 전용 모드를 사용하여 메모리 소비를 줄이세요.

wb = load_workbook(filename='large_file.xlsx', read_only=True)
wb = Workbook(write_only=True)
로그인 후 복사

2. 워크시트 가져오기 및 만들기

현재 활성 워크시트 가져오기:

>>> ws = wb.active
로그인 후 복사

새 워크시트 만들기:

>>> ws1 = wb.create_sheet("Mysheet") # insert at the end (default)
 # or
 >>> ws2 = wb.create_sheet("Mysheet", 0) # insert at first position
 # or
 >>> ws3 = wb.create_sheet("Mysheet", -1) # insert at the penultimate position
로그인 후 복사

워크시트 이름을 사용하여 워크시트 가져오기:

>>> ws3 = wb["New Title"]
로그인 후 복사

모든 워크시트 이름 가져오기:

>>> print(wb.sheetnames)
 ['Sheet2', 'New Title', 'Sheet1']
使用for循环遍历所有的工作表:
 >>> for sheet in wb:
 ... print(sheet.title)
로그인 후 복사

3. 네트워크에서 사용하기 위해

를 스트림에 저장합니다:

>>> from tempfile import NamedTemporaryFile
 >>> from openpyxl import Workbook
 >>> wb = Workbook()
 >>> with NamedTemporaryFile() as tmp:
 wb.save(tmp.name)
 tmp.seek(0)
 stream = tmp.read()
保存到文件:
 >>> wb = Workbook()
 >>> wb.save('balances.xlsx')
保存为模板:
 >>> wb = load_workbook('document.xlsx')
 >>> wb.template = True
 >>> wb.save('document_template.xltx')
로그인 후 복사

4. 셀 위치

는 워크시트의 키로 직접 읽혀집니다.

>>> c = ws['A4']
로그인 후 복사

셀에 값 할당:

>>> ws['A4'] = 4
 >>> c.value = 'hello, world'
로그인 후 복사

Multiple 셀은 조각을 사용하여 다양한 셀에 접근할 수 있습니다:

>>> cell_range = ws['A1':'C2']
로그인 후 복사

숫자 형식 사용:

>>> # set date using a Python datetime
 >>> ws['A1'] = datetime.datetime(2010, 7, 21)
 >>>
>>> ws['A1'].number_format
 'yyyy-mm-dd h:mm:ss'
로그인 후 복사

공식 사용:

>>> # add a simple formula
 >>> ws["A1"] = "=SUM(1, 1)"
로그인 후 복사

셀을 병합하면 왼쪽 상단 셀을 제외한 모든 셀이 워크시트에서 제거됩니다. 삭제:

>>> ws.merge_cells('A2:D2')
 >>> ws.unmerge_cells('A2:D2')
 >>>
>>> # or equivalently
 >>> ws.merge_cells(start_row=2, start_column=1, end_row=4, end_column=4)
 >>> ws.unmerge_cells(start_row=2, start_column=1, end_row=4, end_column=4)
로그인 후 복사

5 , 행 및 열

행, 열 또는 행의 범위를 개별적으로 지정할 수 있습니다.

>>> colC = ws['C']
 >>> col_range = ws['C:D']
 >>> row10 = ws[10]
 >>> row_range = ws[5:10]
로그인 후 복사

Worksheet.iter_rows() 메서드를 사용하여 행을 순회할 수 있습니다.

>>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
 ...for cell in row:
 ...print(cell)
 <Cell Sheet1.A1>
 <Cell Sheet1.B1>
 <Cell Sheet1.C1>
 <Cell Sheet1.A2>
 <Cell Sheet1.B2>
 <Cell Sheet1.C2>
로그인 후 복사

동일한 Worksheet.iter_cols() 메서드 열을 순회합니다:

>>> for col in ws.iter_cols(min_row=1, max_col=3, max_row=2):
 ... for cell in col:
 ... print(cell)
 <Cell Sheet1.A1>
 <Cell Sheet1.A2>
 <Cell Sheet1.B1>
 <Cell Sheet1.B2>
 <Cell Sheet1.C1>
 <Cell Sheet1.C2>
로그인 후 복사

파일의 모든 행 또는 열을 순회하려면 Worksheet.rows 속성을 사용할 수 있습니다:

>>> ws = wb.active
 >>> ws['C9'] = 'hello world'
 >>> tuple(ws.rows)
 ((, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ))
로그인 후 복사

또는 Worksheet.columns 속성:

>>> tuple(ws.columns)
 ((<Cell Sheet.A1>,
 <Cell Sheet.A2>,
 <Cell Sheet.A3>,
 <Cell Sheet.A4>,
 <Cell Sheet.A5>,
 <Cell Sheet.A6>,
 ...
 <Cell Sheet.B7>,
 <Cell Sheet.B8>,
 <Cell Sheet.B9>),
 (<Cell Sheet.C1>,
 <Cell Sheet.C2>,
 <Cell Sheet.C3>,
 <Cell Sheet.C4>,
 <Cell Sheet.C5>,
 <Cell Sheet.C6>,
 <Cell Sheet.C7>,
 <Cell Sheet.C8>,
 <Cell Sheet.C9>))
로그인 후 복사

Worksheet.append()를 사용하거나 Worksheet를 사용하여 반복합니다. .cell() 추가 데이터 한 행:

>>> for row in range(1, 40):
 ... ws1.append(range(600))
 >>> for row in range(10, 20):
 ... for col in range(27, 54):
 ... _ = ws3.cell(column=col, row=row, value="{0}".format(get_column_letter(col)))
로그인 후 복사

삽입 작업이 번거롭습니다. Worksheet.insert_rows()를 사용하여 하나 또는 여러 행을 삽입할 수 있습니다.

>>> from openpyxl.utils import get_column_letter
 >>> ws.insert_rows(7)
>>> row7 = ws[7]
>>> for col in range(27, 54):
 ... _ = ws3.cell(column=col, row=7, value="{0}".format(get_column_letter(col)))
Worksheet.insert_cols()操作类似。Worksheet.delete_rows()和Worksheet.delete_cols()用来批量删除行和列。
로그인 후 복사

6. 값만 읽기 ​​

Worksheet.values ​​​​속성을 사용하여 워크시트의 모든 행을 탐색하되 셀 값만 반환합니다. :

for row in ws.values:
for value in row:
print(value)
로그인 후 복사

Worksheet.iter_rows() 및 Worksheet.iter_cols()는 셀의 값만 반환하도록 value_only 매개변수를 설정할 수 있습니다.

>>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2, values_only=True):
 ... print(row)
 (None, None, None)
(None, None, None)
로그인 후 복사

위 내용은 Python 사무 자동화, 5분 만에 Openpyxl 작업 마스터!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:51cto.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿