Как получить доступ к содержимому файла Excel, хранящегося в моей модели - django - PullRequest
0 голосов
/ 07 ноября 2019

Я занимаюсь разработкой приложения в Django. У меня есть модель файла (скажем, my_file_model), подобная этой:

class my_file_model(models.Model):
    file = models.FileField(upload_to='myDirectory/', blank=False, null=False)

, в которой хранятся таблицы Excel, такие как:

enter image description here

(фиксированное число столбцов, переменное количество строк)

И у меня есть пустая модель (скажем, output_model), например:

class output_model(models.Model):

    field_A=models.CharField(max_length=256, blank=False, null=False)
    field_B=models.CharField(max_length=256, blank=False, null=False)
    field_C=models.CharField(max_length=256, blank=False, null=False)

Я хочу прочитать строкуВыровняйте данные внутри файла Excel и сохраните их внутри моей output_model,
, чтобы я получил что-то вроде этого:

output_model:

    object 1:

        field_A: a
        field_B: b
        field_C: c

    object 2:

        field_A: d
        field_B: e
        field_C: f      

    object 3:

        field_A: g
        field_B: h
        field_C: i  

    ...
        ...

Как я могу это сделать?

Вот мой скриптнасколько я мог написать это:

def pour_entire_my_file_model():

    import pandas as pd
    from .models import my_file_model, output_model

    all_files = my_file_model.objects.all()  

    for file_element in all_files: 

        # I don't know how to access the excel file contents.

        for row in file_element:

            # I don't know how to access a certain excel file cell value of a file that is in my model.

            output_model.objects.create(field_A=cell(row,1)) # it's a
            output_model.objects.create(field_B=cell(row,2)) # it's b
            output_model.objects.create(field_C=cell(row,3)) # it's c

1 Ответ

0 голосов
/ 08 ноября 2019

решено:

def pour_entire__my_file_model():

    import pandas as pd
    from .models import my_file_model, output_model
    all_files = my_file_model.objects.all()

    for file_element in all_files: 

        excel_sheet = pd.read_excel(file_element.My_file_model)
        var_col_A = excel_sheet.Column_A
        var_col_B = excel_sheet.Column_B
        var_col_C = excel_sheet.Column_C

        for i in range(len(var_col_A)):            
            output_model.objects.create(field_A=var_col_A[i], field_B=var_col_B[i], field_C=var_col_C[i])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...