xlrd 모듈을 사용하여 Django 프로젝트에서 Excel 파일 가져오기

2548 단어
프로젝트가 막바지에 이르렀을 때 고객의 일부 데이터 자료를 프로젝트에 가져와 테스트를 하거나 실제로 사용해야 하기 때문에 대량의 데이터는 수동적인 방식으로 입력할 수 없다. 이럴 때 데이터를 Excel 파일을 통해 프로젝트에 가져와야 한다.구체적인 실현 방식은 다음과 같다.xlrd 모듈 도입
import xlrd

2. 전면에서 Excel 파일 데이터 객체 가져오기
excel_file = request.FILES.get('excel_file','')

3. Excel 파일 데이터 객체에서 자주 사용하는 Excel 파일을 읽습니다.xlsx와.xls 두 가지.xls 파일 읽기 시 formatting_ 설정 필요info=True
data = xlrd.open_workbook(filename=None, file_contents=excel_file.read())  # xlsx 
data = xlrd.open_workbook(filename=None, file_contents=excel_file.read(), formatting_info=True)   # xls 

4. Excel에서 각 테이블(sheets)의 데이터 내용 가져오기 get_sheets_mg()# 테이블의 줄마다 데이터 가져오기
def get_sheets_mg(data, num):      # data:Excel ,num 
    table = data.sheets()[num]  #  
    nrows = table.nrows  #  
    ncole = table.ncols  #  
    all_list = []
    for i in range(nrows):  #  
        one_list = []
        for j in range(ncole):
            cell_value = table.row_values(i)[j]
            if (cell_value is None or cell_value == ''):
                cell_value = (get_merged_cells_value(table, i, j))
            one_list.append(cell_value)
        all_list.append(one_list)
    del (all_list[0])  #      Excel , 
    return all_list

Excel 테이블의 한 줄의 데이터만 가져오면 실제 수요를 만족시킬 수 없습니다. Excel에서 칸을 합치는 경우가 종종 있기 때문에 칸을 합치는 상황을 처리하는 함수도 있습니다.get_merged_cells () # 모든 병합된 셀 정보 가져오기 sheet.merged_cells
def get_merged_cells(sheet):
    """
     , :
    [(4, 5, 2, 4), (5, 6, 2, 4), (1, 4, 3, 4)]
    (4, 5, 2, 4)  :   4 , 5( )     2 , 4( ), 
    :param sheet:
    :return:
    """
    return sheet.merged_cells

get_merged_cells_value () # 병합된 셀의 정보 가져오기
def get_merged_cells_value(sheet, row_index, col_index):
    """
     , ;
     , 
    :return:
    """
    merged = get_merged_cells(sheet)
    # print(merged,"==hebing==")
    for (rlow, rhigh, clow, chigh) in merged:
        if (row_index >= rlow and row_index < rhigh):
            if (col_index >= clow and col_index < chigh):
                cell_value = sheet.cell_value(rlow, clow)
                # print(' [%d,%d] , [%s]' % (row_index, col_index, cell_value))
                return cell_value
                break
    return None

5. 가져온 데이터를 데이터베이스로 가져옵니다.
all_list_1 = get_sheets_mg(data, 0)
i = 0
while i < len(all_list_1):
      ....  #  
     i++

좋은 웹페이지 즐겨찾기