본문 바로가기
PROGRAMING📚/Python📑

Excel 이용해서 파일 불러오기

Ta이니 2024. 11. 28.
728x90
반응형

pip ( python install package )

pip install xlrd xlwt 명령은 파이썬에서 Excel 파일을 읽고 쓰기 위한 라이브러리 두 개를 설치하는 명령어입니다. 각각의 라이브러리 기능은 다음과 같습니다.

  1. xlrd: Excel 파일(주로 .xls)을 읽는 데 사용하는 라이브러리입니다. 이 라이브러리는 이전에는 .xlsx 파일도 지원했지만, 버전 2.0.0부터는 .xls 파일만 지원합니다. .xlsx 파일을 읽으려면 openpyxl과 같은 대체 라이브러리를 사용해야 합니다.
  2. xlwt: Excel 파일을 작성하거나 수정하는 데 사용하는 라이브러리입니다. 주로 .xls 파일을 생성할 때 사용되며, .xlsx 파일은 지원하지 않습니다.

설치 방법

이 두 라이브러리를 설치하려면 다음 명령어를 터미널에 입력합니다:

pip install xlrd xlwt

사용 예시

  • xlrd로 Excel 파일 읽기:
  • import xlrd # Excel 파일 열기 workbook = xlrd.open_workbook('sample.xls') sheet = workbook.sheet_by_index(0) # 첫 번째 행, 첫 번째 열의 데이터 읽기 value = sheet.cell_value(0, 0) print(value)
  • xlwt로 Excel 파일 쓰기:
  • import xlwt # 새 워크북과 시트 생성 workbook = xlwt.Workbook() sheet = workbook.add_sheet('Sheet1') # 데이터 쓰기 sheet.write(0, 0, 'Hello World!') # 파일 저장 workbook.save('output.xls')

xlrd와 xlwt는 .xls 형식만 지원하기 때문에, .xlsx 형식을 다루려면 openpyxl이나 pandas 등의 다른 라이브러리도 고려할 수 있습니다.

pip install xlrd xlwt

 

xlrd 파일 읽기

import xlrd

workbook = xlrd.open_workbook('../../source/singer.xls')
sheetCount = workbook.nsheets
print('워크시트는 %d개 입니다' % (sheetCount))

wsheetList = workbook.sheets()
for worksheet in wsheetList :
    print('** 워크시트의 이름 : %s' % (worksheet.name) )
    print(" 행 수는 %d, 열 개수는 %d 입니다." % (worksheet.nrows, worksheet.ncols))
  • workbook.nsheets

워크시트의 갯수를 구할 수 있음

workbook.sheets()

#워크시트 안에 들어있는 워크시트를 가지고옴

worksheet.name

현재 시트의 이름을 가지고옴

worksheet.nrows, worksheet.ncols

현재 시트의 행과 열을 가지고옴

💡

워크시트 안에 있는 데이터의 row, colum 을 츨력

한 행을 출력하고 다음 줄로 넘어가서 다음 행을 출력하는 코드는 작성

import xlrd

workbook = xlrd.open_workbook('../../source/singer.xls')
print('워크시트는 %d개 입니다' % (workbook.nsheets))

for worksheet in workbook.sheets() :
    print('** 워크시트의 이름 : %s' % (worksheet.name) )
    print(" 행 수는 %d, 열 개수는 %d 입니다." % (worksheet.nrows, worksheet.ncols))
    for row in range(worksheet.nrows):
      for col in range(worksheet.ncols):
        print("%s" % worksheet.cell_value(row, col), end='\t')
      print()
    print()

cell_value () 정의

    def cell_value(self, rowx, colx):
        "Value of the cell in the given row and column."
        return self._cell_values[rowx][colx]

 

전체 그룹 인원수/ 인원수 / 그룹 평균 인원수

import xlrd

workbook = xlrd.open_workbook('../../source/singer.xls')
print('워크시트는 %d개 입니다' % (workbook.nsheets))
rowCount =0
groupTot =0
for worksheet in workbook.sheets() :
    print('** 워크시트의 이름 : %s' % (worksheet.name) )
    print(" 행 수는 %d, 열 개수는 %d 입니다." % (worksheet.nrows, worksheet.ncols))
    rowCount += worksheet.nrows -1
    for row in range(worksheet.nrows):
      if worksheet.cell_value(row, 2) != '인원':
        groupTot += worksheet.cell_value(row, 2)
      for col in range(worksheet.ncols):
          print("%s" % worksheet.cell_value(row, col), end='\t')
      print()
    print()
print("전체 그룹 인원수 : ", rowCount)
print("인원수 : ",int(groupTot))
print("그룹 평균 인원수 : ",int(groupTot/rowCount))

xlwt 파일 쓰기

import xlrd
import xlwt

in_workbook = xlrd.open_workbook('../../source/singer.xls')
out_workbook = xlwt.Workbook()
singer_out_165 = xlwt.Workbook()

wsheetList = in_workbook.sheets()
for worksheet in wsheetList:
  outsheet = out_workbook.add_sheet(worksheet.name)
  outsheet_165 = singer_out_165.add_sheet(worksheet.name)
  for row in range(worksheet.nrows):
    for col in range(worksheet.ncols):
      if (worksheet.cell_value(row, 4) != '평균 키'
          and worksheet.cell_value(row, 4) >= 165):
        outsheet_165.write(row, col, worksheet.cell_value(row, col))
        print("%s" % worksheet.cell_value(row, col), end='\t')
      outsheet.write(row, col, worksheet.cell_value(row, col))
    if (worksheet.cell_value(row, 4) != '평균 키'
        and worksheet.cell_value(row, 4) >= 165):
      print()
out_workbook.save('../../source/singer_out.xls')
singer_out_165.save('../../source/singer_out_165.xls')
print('OK~!')
728x90
반응형

'PROGRAMING📚 > Python📑' 카테고리의 다른 글

RawImageViewer / NoteFile  (0) 2024.11.30
python - windowLocationInfo  (2) 2024.11.29
Python - tkinter  (0) 2024.11.28
Python -dict  (0) 2024.11.27
Python-Set  (0) 2024.11.26

댓글