python 사무 자동화의 excel 조작

준비


Python을 사용하여 Excel 파일을 조작하는 일반적인 방법은 다음과 같습니다.
  • xlrd/xlwt
  • openpyxl
  • Pandas
  • xlsxwriter
  • xlwings
  • pywin32
  • xlrd와 xlwt는 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 이름을 통해
  • 위치 인덱스를 사용하여 0부터 시작합니다
  • 
    #  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 속성으로 대응하는 관계는 다음과 같다.
  • 0 - 비어 있음(empty)
  • 1 - 문자열(string)
  • 2 - 숫자(number)
  • 3 --date(날짜)
  • 4 -- boolean(부울값)
  • 5 --error(오류)
  • 
    #  
    #  : 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 자동화에 관한 자료는 저희 다른 관련 글을 주목해 주십시오!

    좋은 웹페이지 즐겨찾기