0
I have a problem returning my code. I do not get any error in the execution, but the problem is the return in the Excel table. I’m doing a case study of my college and the system is about customer registration and ordering. The class and object code just below:
Class
class Cliente:
    def __init__(self, nome, s_nome, tel, email, social_n, endereco, data_cad):
        self.set_nome(nome)
        self.set_s_nome(s_nome)
        self.set_tel(tel)
        self.set_email(email)
        self.set_social_n(social_n)
        self.set_endereco(endereco)
        self.set_data_cad(data_cad)
    # SETs dos dados do cliente
    def set_nome(self, nome):
        self.nome = nome
    def set_s_nome(self, s_nome):
        self.s_nome = s_nome
    def set_tel(self, tel):
        self.tel = tel
    def set_email(self, email):
        self.email = email
    def set_social_n(self, social_n):
        self.social_n = social_n
    
    def set_endereco(self, endereco):
        self.endereco = endereco
    def set_data_cad(self, data_cad):
        self.data_cad = data_cad
    # GET para retornar o "database"
    def get_database(self,rows):
        one_cliente = []
        for n in range(rows):
            one_cliente.append({
                'id': n + 1,
                'nome':self.nome,
                'sobrenome':self.s_nome,
                'telefone':self.tel,
                'email':self.email,
                'rede_social':self.social_n,
                'endereco':self.endereco,
                'data_de_cadastro':self.data_cad
            })
        return one_cliente 
another code
import os
import xlwt
import xlrd
from datetime import date
from class_cliente import Cliente
def main():
    cont = 1
    print('''\
        O que deseja fazer?
        [1] Tabela de Clientes
        [2] Tabela de Encomendas
        [3] Excluir Cadastro
        [4] Relatório Excel
        [5] Sair
        ''')
    opcGeral = int(input('Digite Aqui: '))
    while True:
        if opcGeral == 1:
            nome = input('Nome do cliente: ')
            s_nome = input('Sobrenome do cliente: ')
            tel = input('Telefone pra conta: ')
            email = input('email: ')
            social_n = input('Rede: ')
            endereco = input('Endereço: ')                
            data_cad = date.today()
            workbook = xlwt.Workbook()
            worksheet = workbook.add_sheet("cliente")
            dado_cliente = Cliente(nome, s_nome, tel, email, social_n, endereco, data_cad)
            cont_cadas = dado_cliente.get_database(cont) 
            cont += 1
        elif opcGeral == 2:
            pass
        elif opcGeral == 4:
            worksheet.write(0,0,u'ID')
            worksheet.write(0,1,u'NOME')
            worksheet.write(0,2,u'SOBRENOME')
            worksheet.write(0,3,u'TELEFONE')
            worksheet.write(0,4,u'EMAIL')
            worksheet.write(0,5,u'REDE SOCIAL')
            worksheet.write(0,6,u'ENDEREÇO')
            worksheet.write(0,7,u'DATA DO CADASTRO')
            for i, cliente_one in enumerate(cont_cadas):
                worksheet.write(i + 1, 0, label = cliente_one['id'])
                worksheet.write(i + 1, 1, label = cliente_one['nome'])
                worksheet.write(i + 1, 2, label = cliente_one['sobrenome'])
                worksheet.write(i + 1, 3, label = cliente_one['telefone'])
                worksheet.write(i + 1, 4, label = cliente_one['email'])
                worksheet.write(i + 1, 5, label = cliente_one['rede_social'])
                worksheet.write(i + 1, 6, label = cliente_one['endereco'])
                worksheet.write(i + 1, 7, label = cliente_one['data_de_cadastro'],style=xlwt.easyxf(num_format_str='dd/mm/yyyy'))
            workbook.save('cliente.xls')
        opcGeral = input('Cadastrar mais clientes: [S/N]')
        if opcGeral.lower() == 's' :
            print('''\
        O que deseja fazer?
        [1] Tabela de Clientes
        [2] Tabela de Encomendas
        [3] Excluir Cadastro
        [4] Relatório Excel
        [5] Sair
        ''')
            opcGeral = int(input('Digite Aqui: '))
        else:
            break
    
if __name__ == "__main__":
    main()
Note: The second code is not yet finished
I’m using lib xlwt to write in Excel only when I run the code when I start registering the clients becomes normal and inserts the data normally, but when I do two entries instead of writing in Excel the two people registered she ends up writing twice the last person registered... I wonder what I’m doing wrong.
User defined classis of the changeable type. Read this post because I believe that’s the problem.– Paulo Marques
How are you running the program when you notice the error? Do you register a client, save it in excel, register the second one and save it to Excell again? Or you register twice and save twice?
– Flavio Moraes
save only once register several and save once.
– Judah Aragão
Okay, I get your problem. You realize that
cont_cadasis a list that only contains the registration of a client? You are not saving the information of each client but of a single one.– Flavio Moraes