Считайте несколько строк столбца из листа Excel и сохраните его как словарь - PullRequest
0 голосов
/ 21 октября 2019

Кто-нибудь, пожалуйста, помогите мне с этим, я новичок в языке Python!

У меня есть файл Excel с колонками, такими как Название банка, О, Продукты, Популярные продукты, Кредиты, Страхование, Карты и Банковское дело.

Final Updated Bank sheet

Я только что прочитал файл Excel и обновил его значение в моей базе данных, но формат, в котором я хочу, чтобы моя база данных выглядела для Типа продукта, должен выглядеть примерно так:

{"'Account':['Savings','Current'], 'Loan':['Consumer Loan','Personal Loan','Housing Loan','Vehicle Loan','MSME Loan'], 'Maha eTrade Online Share Trading':None, 'Maha Mobile Banking':None, 'Internet Banking':None}

Но в настоящее время мои данные в базе данных заполняются так:

{"{'Account':['Savings','Current']}","{'Loan':['Consumer Loan','Personal Loan','Housing Loan','Vehicle Loan','MSME Loan']}","Maha eTrade Online Share Trading","Maha Mobile Banking","Internet Banking"}

Вот мой код:

def update_bank_data():
    from loans.models import BankData
    filename = 'filecontainer/ifscdata/Final Updated Banksheet.xlsx'
    exist =0
    if os.path.isfile(filename):
        print("file exists")
        exist = 1
    if exist:
        xl_workbook = xlrd.open_workbook(filename)
        print("------------new file=-----------------------")
        print(filename)
        sheet_names = xl_workbook.sheet_names()
        print('Sheet Names', sheet_names)
        j = 1
        for sheet in sheet_names:
            xl_sheet = xl_workbook.sheet_by_name(sheet)
            no_of_row = xl_sheet.nrows + j
            print no_of_row
            next_bank_row_num=None
            currnt_bank_row_num=None
            j=1
            try:
                while (j < no_of_row):
                    if next_bank_row_num:
                        currnt_bank_row_num = next_bank_row_num
                        print("current bank----->", xl_sheet.cell_value(currnt_bank_row_num, 0))
                    else:
                        currnt_bank_row_num = j
                        print("current bank----->", xl_sheet.cell_value(currnt_bank_row_num, 0))

                    j = j + 1
                    while (xl_sheet.cell_value(j, 0) == '' or xl_sheet.cell_value(j, 0) == None):
                        j = j + 1
                    next_bank_row_num = j
                    j = j + 1

                    def fetch_value_list(currnt_bank_row_num, column, max_limit, xl_sheet):
                        try:
                            print ("fetching column data===============")
                            print(currnt_bank_row_num, column, max_limit)
                            k = currnt_bank_row_num
                            value = []
                            while (k < max_limit):
                                if (xl_sheet.cell_value(k, column) == '' or xl_sheet.cell_value(k, column) == None):
                                    break
                                else:
                                    data = xl_sheet.cell_value(k, column)
                                    value.append(data)
                                k = k + 1
                            return value
                        except Exception as e:
                            print e.message
                            pass
                    bank_name = xl_sheet.cell_value(currnt_bank_row_num, 0)
                    about = fetch_value_list(currnt_bank_row_num, 1, next_bank_row_num, xl_sheet)
                    product = fetch_value_list(currnt_bank_row_num, 2, next_bank_row_num, xl_sheet)
                    pop_product = fetch_value_list(currnt_bank_row_num, 3, next_bank_row_num, xl_sheet)
                    loans = fetch_value_list(currnt_bank_row_num, 4, next_bank_row_num, xl_sheet)
                    insurance = fetch_value_list(currnt_bank_row_num, 5, next_bank_row_num, xl_sheet)
                    card = fetch_value_list(currnt_bank_row_num, 6, next_bank_row_num, xl_sheet)
                    banking = fetch_value_list(currnt_bank_row_num, 7, next_bank_row_num, xl_sheet)
                    print ("Create Data")
                    BankData.objects.filter(bank_name=bank_name).update(popular_prduct=pop_product, product=product, about= about, loans=loans, insurance=insurance, card=card, banking=banking)
                    print("next_bank_row", xl_sheet.cell_value(next_bank_row_num, 0))
            except Exception as e:
                print e.message
                pass
        pass
...