Python 3 엑셀 표 데 이 터 를 읽 고 기록 하 는 예제 코드

python 작업 excel 주요 용도 xlrd xlwt 라 이브 러 리 와 xlrd 는 엑셀 표 데 이 터 를 읽 고 xlsx 와 xls 형식의 엑셀 표를 지원 합 니 다.xlwt 엑셀 표 데이터 쓰기;
1.python 에서 엑셀 표 데 이 터 를 읽 습 니 다.
1.엑셀 표 데 이 터 를 읽 는 데 자주 사용 되 는 작업

import xlrd
 
#   excel  
data_excel=xlrd.open_workbook('data/dataset.xlsx')
 
#     sheet  
names=data_excel.sheet_names()
 
#   book  sheet        ,    xlrd.sheet.Sheet()  
table=data_excel.sheets()[0] #         sheet
table=data_excel.sheet_by_index(sheetx=0) #         sheet
table=data_excel.sheet_by_name(sheet_name='Sheet1') #       
 
# excel        
n_rows=table.nrows #    sheet      
n_cols=table.ncols #    sheet      
row_list=table.row(rowx=0) #                   
cols_list=table.col(colx=0) #                   
#                   
row_data=table.row_values(0,start_colx=0,end_colx=None)
#                   
cols_data=table.col_values(0,start_rowx=0,end_rowx=None)
row_lenth=table.row_len(0) #             
 
# excel         
row_col=table.cell(rowx=0,colx=0) #        
row_col_data=table.cell_value(rowx=0,colx=0) #          
2.xlrd 모듈 의 주요 조작

import xlrd
 
"""   excel  """
workbook = xlrd.open_workbook("data.xlsx")
print(workbook)       #   :<xlrd.book.Book object at 0x000000000291B128>
 
"""     sheet  """
sheet_names = workbook.sheet_names()
print(sheet_names)     #   :[' 1', 'Sheet2']
 
"""        sheet  """
#      sheet  
sheets_object = workbook.sheets()
print(sheets_object)    #   :[<xlrd.sheet.Sheet object at 0x0000000002956710>, <xlrd.sheet.Sheet object at 0x0000000002956AC8>]
#   index     sheet  
sheet1_object = workbook.sheet_by_index(0)
print(sheet1_object)    #   :<xlrd.sheet.Sheet object at 0x0000000002956710>
#   name     sheet  
sheet1_object = workbook.sheet_by_name(sheet_name=" 1")
print(sheet1_object)    #   :<xlrd.sheet.Sheet object at 0x0000000002956710>
 
"""     sheet     """
#   index  sheet1    
sheet1_is_load = workbook.sheet_loaded(sheet_name_or_index=0)
print(sheet1_is_load)    #   :True
#   sheet    sheet1    
sheet1_is_load = workbook.sheet_loaded(sheet_name_or_index=" 1")
print(sheet1_is_load)    #   :True
 
"""  sheet          """
#   sheet1      
nrows = sheet1_object.nrows
print(nrows)        #   :5
#   sheet1  3    
all_row_values = sheet1_object.row_values(rowx=2)
print(all_row_values)      #   :[3.0, 'b', 1, '']
row_values = sheet1_object.row_values(rowx=2, start_colx=1, end_colx=3)
print(row_values)        #   :['b', 1]
#   sheet1  3      
row_object = sheet1_object.row(rowx=2)
print(row_object)        #   :[number:3.0, text:'b', bool:1, empty:'']
#   sheet1  3    
row_slice = sheet1_object.row_slice(rowx=2)
print(row_slice)        #   :[number:3.0, text:'b', bool:1, empty:'']
#   sheet1  3      
row_types = sheet1_object.row_types(rowx=2)
print(row_types)        #   :array('B', [2, 1, 4, 0])
#   sheet1  3    
row_len = sheet1_object.row_len(rowx=2)
print(row_len)         #   :4
#   sheet1       
rows_generator = sheet1_object.get_rows()
print(rows_generator)      #   :<generator object Sheet.get_rows.<locals>.<genexpr> at 0x00000000028D8BA0>
 
"""  sheet          """
#   sheet1      
ncols = sheet1_object.ncols
print(ncols)        #   :4
#   sheet1  colx=1    
col_values = sheet1_object.col_values(colx=1)
print(col_values)      #   :['  ', 'a', 'b', 'c', 'd']
col_values1 = sheet1_object.col_values(1, 1, 3)
print(col_values1)     #   :['a', 'b']
#   sheet1  2    
col_slice = sheet1_object.col_slice(colx=1)
print(col_slice)      #   :[text:'  ', text:'a', text:'b', text:'c', text:'d']
#   sheet1  2      
col_types = sheet1_object.col_types(colx=1)
print(col_types)      #   :[1, 1, 1, 1, 1]
 
""" sheet          """
#   sheet1  rowx=1 , colx=2      
cell_info = sheet1_object.cell(rowx=1, colx=2)
print(cell_info)      #   : text:'m'
print(type(cell_info))   #   :<class 'xlrd.sheet.Cell'>
#   sheet1  rowx=1 , colx=2     
cell_value = sheet1_object.cell_value(rowx=1, colx=2)
print(cell_value)      #   : m
#   sheet1  rowx=1 , colx=2       
cell_type = sheet1_object.cell_type(rowx=1, colx=2)
print(cell_type)      #   :1
 
#    ctype:empty 0,string 1,number 2,date 3,boolean 4,error 5;
3.셀 내용 을 날짜 시간 으로 읽 는 방식
  • 셀 내용 의 유형 이 date,즉 ctype 값 이 3 일 경우 이 셀 의 데 이 터 는 날짜 입 니 다
  • xlrd.xldate_as_tuple(xldate,datemode):xldate 데이터 가 날짜/시간 이면 datetime 에 적용 되 는 원 그룹 으로 바 뀌 고 반환 값 은 원 그룹 으로 바 뀌 며 형식 은:(year,month,day,hour,minute,nearestsecond)
  • xldate:sheet 대상 의 셀 데이터datemode:날짜 모드
    
    import xlrd
    import datetime
     
    """   sheet       """
    workbook = xlrd.open_workbook("data.xlsx")
    sheet2_object = workbook.sheet_by_name("Sheet2")
    # value_type = sheet2_object.cell(0, 1).ctype
    value_type = sheet2_object.cell_type(0, 1)
    print(value_type) #   :3 ,     date
    if value_type == 3:
      print("        ")
      cell_value = sheet2_object.cell_value(1, 0)
      print(cell_value) #   :43567.0
      date_tuple = xlrd.xldate_as_tuple(cell_value, workbook.datemode)
      print(date_tuple) #   :(2020, 4, 12, 0, 0, 0)
      date_value = datetime.date(*date_tuple[:3])
      print(date_value) #   :2020-04-12
      date_format = date_value.strftime('%Y/%m/%d')
      print(date_format) #   :2020/04/12
    4.병합 셀 의 데 이 터 를 읽 습 니 다.
    표 가 xls 형식 이 라면 워 크 북 을 열 때 formatterinfo 를 True 로 설정 한 다음 sheet 의 병합 셀 가 져 오기;표 에 xlsx 형식 이 있 으 면 워 크 북 을 열 때 formatter 를 유지 합 니 다.info 는 기본 값 False 이 고 sheet 의 병합 셀 을 가 져 옵 니 다.
    SheetObject.merged_cells:sheet 에서 셀 을 합 친 정 보 를 가 져 오고 값 을 목록 으로 되 돌려 줍 니 다.sheet 대상 에 병합 셀 이 없 으 면 빈 목록 으로 되 돌아 갑 니 다.목록 에 있 는 모든 셀 정보의 형식 은:(rowstart, row_end, col_start, col_end); row_start 는 병합 셀 의 시작 줄 을 표시 합 니 다.row_end 는 셀 을 합 친 끝 줄 을 표시 합 니 다.col_start 는 병합 셀 의 시작 열 을 표시 합 니 다.col_end 는 셀 을 합 친 끝 열 을 표시 합 니 다.셀 을 합 친 줄 의 값 범 위 는[rowstart, row_end),row 포함start,row 포함 되 지 않 음end;셀 을 합 친 열 추출 범 위 는[colstart, col_end),col 포함start,col 포함 되 지 않 음end;예 를 들 어(1,3,4,6):1 에서 2 행 까지 합병 하고 4 에서 5 열 까지 합병 하 는 것 을 나타 낸다.
    병합 셀 데 이 터 를 읽 으 려 면 merged 만 필요 합 니 다.cells 데이터 의 rowstart 와 colstart 이 두 색인 만 있 으 면 됩 니 다.
    
    import xlrd
     
    """                  """
    #   xlsx   excel         
    workbook = xlrd.open_workbook("data.xlsx")
    sheet2_object = workbook.sheet_by_name("Sheet2")
    print(sheet2_object.merged_cells)  #   : [(1, 2, 0, 2), (3, 6, 0, 2)]
    #   xls   excel         
    workbook1 = xlrd.open_workbook("data.xls", formatting_info=True)
    sheet2_object1 = workbook1.sheet_by_name("Sheet2")
    print(sheet2_object1.merged_cells)  #   : [(1, 2, 0, 2), (3, 6, 0, 2)]
     
    #          (  “      ”      )
    print(sheet2_object.cell_value(1, 0))  #   :  1
    print(sheet2_object.cell_value(3, 0))  #   :  2
    #    for              
    for (row_start, row_end, col_start, col_end) in sheet2_object.merged_cells:
      print(sheet2_object.cell_value(rowx=row_start, colx=col_start))
    2.python 이 엑셀 표 데 이 터 를 기록 합 니 다.
    1.엑셀 표 데 이 터 를 작성 하 는 데 자주 사용 되 는 작업 과 형식 설정
    
    import xlwt
      import datetime
      #     workbook     
      workbook = xlwt.Workbook(encoding='utf-8')
      #     worksheet
      worksheet = workbook.add_sheet('Sheet1')
     
      #      
      style = xlwt.XFStyle() #      
      font = xlwt.Font() #        
      font.name = 'Times New Roman'
      font.height = 20 * 11 #     ,11   ,20     
      font.bold = True #   
      font.underline = True #    
      font.italic = True #    
      style.font = font #     
      #     excel,      ,  ,  
      worksheet.write(0, 0, 'test_data') #        
      worksheet.write(1, 0, 'test_data', style) #         
     
      #        
      worksheet.col(0).width = 3333
     
      #         
      pattern = xlwt.Pattern()
      pattern.pattern = xlwt.Pattern.SOLID_PATTERN
      pattern.pattern_fore_colour = 13
      style = xlwt.XFStyle() # Create the Pattern
      style.pattern = pattern # Add Pattern to Style
      worksheet.write(2, 0, 'colour', style)
     
      #           
      borders = xlwt.Borders() # Create Borders
      borders.left = xlwt.Borders.DASHED  #DASHED  ,NO_LINE  ,THIN  
      borders.right = xlwt.Borders.DASHED #borders.right=1     
      borders.top = xlwt.Borders.DASHED
      borders.bottom = xlwt.Borders.DASHED
      borders.left_colour=0x40
      borders.right_colour = 0x40
      borders.top_colour = 0x40
      borders.bottom_colour = 0x40
      style = xlwt.XFStyle() # Create Style
      style.borders = borders # Add Borders to Style
      worksheet.write(3,0 , 'border1', style)
     
      #           
      #    :1,    :2,   :3,    :4,    :5,  :6,    :7,    :8,    :9,    :10,     :11,     :12,    :13
      borders = xlwt.Borders()
      borders.left = 1  #      
      borders.right = 1
      borders.top = 1
      borders.bottom = 1
      borders.left_colour = 2 #       
      borders.right_colour = 2
      borders.top_colour = 2
      borders.bottom_colour = 2
      style = xlwt.XFStyle() # Create Style
      style.borders = borders # Add Borders to Style
      worksheet.write(4, 0, 'border2', style)
     
      #          
      style = xlwt.XFStyle()
      style.num_format_str = 'M/D/YY' # Other options: D-MMM-YY, D-MMM, MMM-YY, h:mm, h:mm:ss, h:mm, h:mm:ss, M/D/YY h:mm, mm:ss, [h]:mm:ss, mm:ss.0
      worksheet.write(5, 0, datetime.datetime.now(), style)
     
      #         
      worksheet.write(0, 1, 2) # Outputs 2
      worksheet.write(0, 2, 3) # Outputs 3
      worksheet.write(1, 1, xlwt.Formula('B1*C1')) # Should output "6" (B1[2] * B2[6])
      worksheet.write(1, 2, xlwt.Formula('SUM(B1,C1)')) # Should output "5" (B1[2] + C1[3])
     
      #           
      worksheet.write(0, 3, xlwt.Formula('HYPERLINK("http://www.baidu.com";"baidu")')) # Outputs the text "baidu" linking to http://www.baidu.com
     
      #     
      worksheet.write_merge(0, 0, 4, 5, 'First Merge')  #  0  4 5 
      worksheet.write_merge(1, 2, 4, 5, 'Second Merge') #  1 2  4 5 
     
      #            
      alignment=xlwt.Alignment() ## Create Alignment
      alignment.horz=xlwt.Alignment.HORZ_CENTER
      alignment.vert=xlwt.Alignment.VERT_CENTER
      style=xlwt.XFStyle()
      style.alignment=alignment  # Add Alignment to Style
      worksheet.write(0, 6, 'alignment', style)
     
      #     
      workbook.save('data_test.xls')
    2,글꼴 색상 과 배경 색상 대응 색인 번호 글꼴 색상:font.colourindex 배경 색:pattern.patternfore_colour

    Python 3 에서 엑셀 표 데 이 터 를 읽 고 기록 하 는 예제 코드 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Python 3 에서 엑셀 내용 을 읽 고 기록 하 는 것 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 을 바 랍 니 다!

    좋은 웹페이지 즐겨찾기