Python 從excel中導入數據

import openpyxl
import time
def import_user(*_arg, **_kwarg):
    try:
        CONTENTS = request.files.get('content')
        # 打開excel文件,獲取工作簿對象
        #這裏我先把文件上傳,然後再獲取到url路徑
        if CONTENTS:
            folder_url = 'excel'
            result = upload_files_by_folder_name(CONTENTS, folder_url)
            if 'error' in result[0]:
                print(result[0]['error'])
            else:
                url = result[0]['dirname'] + '/' + result[0]['filename']
        else:
            return 0
        wb = openpyxl.load_workbook(url)
        # 從表單中獲取單元格的內容
        sheet = wb['數據錄入']  # 當前表單
        error_elder = []
        rows = int(sheet.max_row) + 1  #加1是因爲循環是因爲取不到rows,是小於,不包含rows
        #從第二行開始遍歷,第一行是標題
        for i in range(2, rows):
            name = sheet.cell(i, 1).value  #姓名
            age = sheet.cell(i, 2).value  # 年齡

            if name == '' or name== None:
                continue
            
            #此處開始就是插入數據庫的操作
            #我這裏忽略了

            
        
        return '1'
    except Exception as exc:
        ex_str = traceback.format_exc()
        logger.error('error', exc_info=True)
        resp = make_response(render_template('error.html', errormsg=exc, hot_line=hot_line,copy_right=copy_right))
        return resp


def upload_files_by_folder_name(file_obj, folder_url):
    """
    圖片上傳(不支持多圖)
    :param file_obj:
    :param folder_url:
    :return:
    """
    error = False
    result = []
    if file_obj and upload_allowed_file(file_obj.filename):
        fname, fext = os.path.splitext(file_obj.filename)
        rnd_name = '%s%s' % (gen_rnd_filename(), fext)
        filepath = os.path.join(sqb.static_folder, 'upload/%s' % folder_url, rnd_name)
        # 檢查路徑是否存在,不存在則創建
        dirname = os.path.dirname(filepath)
        if not os.path.exists(dirname):
            try:
                os.makedirs(dirname)
            except:
                error = 'ERROR_CREATE_DIR'
        elif not os.access(dirname, os.W_OK):
            error = 'ERROR_DIR_NOT_WRITEABLE'
        if error:
            result.append({'error': error})
        else:
            file_obj.save(filepath)
            url = 'http://' + get_env('domain_name') + '/static/upload/%s/%s' % (folder_url, rnd_name)
            result.append({"filename": rnd_name, "url": url,"dirname":dirname})
    return result

 

發佈了23 篇原創文章 · 獲贊 8 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章