python 사무 자동화의 excel 조작
준비
Python을 사용하여 Excel 파일을 조작하는 일반적인 방법은 다음과 같습니다.
그중에서
xlrd는 Excel 파일을 읽는 것을 맡고 xlwt는 데이터를 Excel 파일에 쓸 수 있습니다
우리는 이 두 개의 의존 라이브러리를 설치한다
#
pip3 install xlrd
pip3 install xlwt
xlrd Excel 읽기
xlrd에서 open_ 사용하기워크북(filepath) 로컬 Excel 파일 열기
import xlrd
# ,
wb = xlrd.open_workbook(file_path)
워크북 대상의 nsheets 속성 획득 Sheet 수, sheet_names() 메서드는 모든 Sheet 이름의 목록을 반환합니다.
# sheet
sheets_num, sheets_names = wb.nsheets, wb.sheet_names()
print('sheet :', sheets_num)
print('sheet :', sheets_names)
워크북의 Sheet를 필터링하는 방법은 다음과 같습니다.
# sheet
#
sheet = wb.sheet_by_index(0)
# sheet = wb.sheet_by_name(' Sheet')
print(sheet)
모든 sheet 대상은name,nrows,ncols를 이용하여 Sheet 이름, 줄 수량, 열 수량을 얻을 수 있다따로
row_values(index)、col_values (index) 는 각각 한 줄 또는 한 열의 데이터 목록을 가져오는 데 사용됩니다.
# sheet , 、
sheet_name, sheet_row_count, sheet_column_count = sheet.name, sheet.nrows, sheet.ncols
print(' sheet :', sheet_name, ", :", sheet_row_count, " ; :", sheet_column_count, " ")
# , 0
# : 2
row_datas = sheet.row_values(1)
print(' 2 :', row_datas)
# , 0
# :
column_datas = sheet.col_values(1)
print(' 2 :', column_datas)
셀은 행 인덱스, 열 인덱스를 통해cell(row_index,column_index) 함수를 호출할 수 있습니다주의해야 할 것은 줄 인덱스와 열 인덱스는 모두 0에서 시작된다는 것이다. 즉, 0은 첫 번째 줄을 대표한다.
xlrd에서 칸의 데이터 형식은 6가지를 포함하고 ctype 속성으로 대응하는 관계는 다음과 같다.
#
# : 2 1
one_cell = sheet.cell(1, 0)
#
cell_value = one_cell.value
print(" :", cell_value)
#
cell_type = one_cell.
print(" :", cell_type)
마지막으로, 현재 Sheet의 모든 칸에 있는 데이터를 가져오려면 모든 줄, 열을 훑어보면서 조작할 수 있습니다
#
print(' :')
for r in range(sheet.nrows):
for i in range(sheet.ncols):
print(sheet.cell(r, i).value)
xlwt 쓰기 Excel
Excel에 데이터를 쓰기를 원한다면, xlwt는 매우 편리하다
우선, xlwt의 Workbook() 방법으로 워크북 대상을 만듭니다
그리고 워크북 대상의add_ 사용하기sheet(sheetname) 메서드에 Sheet 추가
import xlwt
sheetname = ' Sheet'
#
wb = xlwt.Workbook()
# Sheet, sheet
sheet = wb.add_sheet(sheetname)
이어서 sheet 대상의 write () 방법을 통해 줄 인덱스와 열 인덱스에 따라 데이터를 대응하는 칸에 기록합니다
# Sheet
# 3 : ( 0 )、 ( 0 )、
# ,
#
for index, title in enumerate(self.titles):
sheet.write(0, index, title)
#
for index_row, row_values in enumerate(self.values):
for index_column, column_value in enumerate(row_values):
sheet.write(index_row + 1, index_column, column_value)
주의해야 할 것은 마지막으로 워크북의save (filepath) 를 호출해야만 로컬에서 Excel 파일을 생성할 수 있다는 것이다
#
#
wb.save(filepath)
진급용법
다음은 자주 사용하는 진급 용법 몇 가지를 이야기합시다
1、보이는 모든 시트 가져오기
Sheet 데이터를 읽을 때 항상 숨겨진 Sheet를 필터링해야 함
sheet 대상의visibility 속성 값이 0일 때 이 Sheet가 워크북에 표시됩니다.안 그러면 숨겨져요.
def get_all_visiable_sheets(self, wb):
"""
sheet
:param wb:
:return:
"""
return list(filter(lambda item: item.visibility == 0, wb.sheets()))
# 1、 sheet
sheet_visiable = self.get_all_visiable_sheets(wb)
print(' sheet :', sheet_visiable)
2. Sheet 가시 행 또는 열 가져오기Sheet에 행과 열이 숨겨져 있을 수 있음
def get_all_visiable_rows(self, sheet):
"""
sheet ,
:param sheet:
:return:
"""
result = [index for index in range(sheet.nrows) if sheet.rowinfo_map[index].hidden == 0]
return result
def get_all_visiable_columns(self, sheet):
"""
sheet ,
:param sheet:
:return:
"""
result = [index for index in range(sheet.ncols) if sheet.colinfo_map[index].hidden == 0]
return result
3. 셀 스타일 가져오기셀 글꼴 색상과 배경을 가져오는 것을 예로 들다
def get_cell_bg_color(self, wb, sheet, row_index, col_index):
"""
:param wb:
:param sheet:
:param row_index:
:param col_index:
:return:
"""
xfx = sheet.cell_xf_index(row_index, col_index)
xf = wb.xf_list[xfx]
#
font_color = wb.font_list[xf.font_index].colour_index
#
bg_color = xf.background.pattern_colour_index
return font_color, bg_color
주의해야 할 것은 xlrd로 칸을 읽는 스타일입니다. 워크북을 열 때formatting_info = True, 그렇지 않으면 예외가 발생합니다.
# : formatting_info=True,
wb = xlrd.open_workbook(file_path, formatting_info=True)
sheet = wb.sheet_by_index(0)
마지막
xlrd, xlwt를 조합하여 사용하면 기본적으로 대부분의 작업을 완성할 수 있다. 예를 들어 복제, 분할, 선별 등 복잡한 기능에 대해 xlutils라는 의존 라이브러리를 사용할 수 있다.
지적해야 할 것은 이 조합이 xlsx의 호환성에 그다지 좋지 않다는 것이다.xlsx 파일을 조작하려면 xls로 전환한 다음
코드 주소:https://github.com/xingag/test_auto/tree/master/office_auto/Excel
이상은python 사무 자동화의 excel 조작에 대한 상세한 내용입니다. 더 많은python excel 자동화에 관한 자료는 저희 다른 관련 글을 주목해 주십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.