Jump to content

python - armazenar resultado do for em um dict e exportar para excel


michelew

Postagens Recomendadas

Utilizando o xmltodict importei um arquivo xml de uma NF-e.

fiz um for e após armazendo em um dict porém na hora que exporto ele leva somente o ultimo produto, alguem consegue me ajudar, sou iniciante em python.

Criei um for para percorrer todos os produtos do xml e armazenar esses dados em um dict:

Como fazer para exportar todos?

# Informações referentes aos produtos
produto = dic_notafiscal['det']
dic_produtos = {}
for i, prod in enumerate(produto):
    codigo_prod = prod['prod']['cProd']
    nome_prod = prod['prod']['xProd']
    ncm_prod = prod['prod']['NCM']
    cfop_prod = prod['prod']['CFOP']
    qtde_prod = prod['prod']['qCom']
    valor_unit = prod['prod']['vUnCom']
    vlr_total_prod = prod['prod']['vProd']
    if 'vFrete' in prod['prod']:
        vlr_frete_prod = prod['prod']['vFrete']
    else:
        vlr_frete_prod = 0

    if 'vDesc' in prod['prod']:
        vlr_desc_prod = prod['prod']['vDesc']
    else:
        vlr_desc_prod = 0

    # Criando um dicionário para salvar as informações e exportar posteriormente
    dic_produtos = {
        'codigo_produto': codigo_prod,
        #Transformei o nome do produto em uma lista porque o nome tem mais de uma palavra
        'nome_produto': [nome_prod],
        'ncm': ncm_prod,
        'cfop': cfop_prod,
        'qtde': qtde_prod,
        'valor_unitario': valor_unit,
        'valor_total_produto': vlr_total_prod,
        'valor_frete': vlr_frete_prod,
        'valor_desconto': vlr_desc_prod
    }


    print(dic_produtos)

    # Exportar para o excel especificando duas folhas
    tabela = pd.DataFrame.from_dict(dic_produtos)
    tabela2 = pd.DataFrame.from_dict(dados)
    with pd.ExcelWriter('nfe_dados.xlsx') as writer:
        tabela2.to_excel(writer, sheet_name='Dados')
        tabela.to_excel(writer, sheet_name='Produtos')

 

Link to comment
Compartilhe em outros sites

  • michelew mudou o título para python - armazenar resultado do for em um dict e exportar para excel

Resolvi criando uma lista para cada variável

    produto = dic_notafiscal['det']
    codigo_prod =[]
    nome_prod = []
    ncm_prod = []
    cfop_prod = []
    qtde_prod = []
    valor_unit = []
    vlr_total_prod = []
    vlr_frete_prod = []
    vlr_desc_prod = []
    for i, prod in enumerate(produto):
        codigo_prod.append(prod['prod']['cProd'])
        nome_prod.append(prod['prod']['xProd'])
        ncm_prod.append(prod['prod']['NCM'])
        cfop_prod.append(prod['prod']['CFOP'])
        qtde_prod.append(prod['prod']['qCom'])
        valor_unit.append(prod['prod']['vUnCom'])
        vlr_total_prod.append(prod['prod']['vProd'])
        #Se a Tag vFrete existir dentro da tag prod pega o valro, senão retorna 0
        if 'vFrete' in prod['prod']:
            vlr_frete_prod.append(prod['prod']['vFrete'])
        else:
            vlr_frete_prod.append(0)

        if 'vDesc' in prod['prod']:
            vlr_desc_prod.append(prod['prod']['vDesc'])
        else:
            vlr_desc_prod.append(0)

        # Criando um dicionário para salvar as informações DOS PRODUTOS e exportar posteriormente
        dic_produtos = {
            'documento': numero_nfe,
            'codigo_produto': codigo_prod,
            'nome_produto': nome_prod,
            'ncm': ncm_prod,
            'cfop': cfop_prod,
            'qtde': qtde_prod,
            'valor_unitario': valor_unit,
            'valor_total_produto': vlr_total_prod,
            'valor_frete': vlr_frete_prod,
            'valor_desconto': vlr_desc_prod
        }

 

Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...