Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

script - xmls

Fazer download em docx, pdf ou txt
Fazer download em docx, pdf ou txt
Você está na página 1de 2

import os

import re
import xml.etree.ElementTree as ET
import pandas as pd

# Função para limpar caracteres indesejados


def clean_xprod(value):
pattern = r'[;:/+&\-\"\'?_#(){}\[\]º]'
return re.sub(pattern, '', value)

# Função para processar um único arquivo XML


def process_xml(file_path):
tree = ET.parse(file_path)
root = tree.getroot()

# Namespace do XML
ns = {"nfe": "http://www.portalfiscal.inf.br/nfe"}

# Extrair os dados
data = []
for det in root.findall(".//nfe:det", ns):
xprod = det.find(".//nfe:xProd", ns).text
qcom = det.find(".//nfe:qCom", ns).text
vuncom = det.find(".//nfe:vUnCom", ns).text
ncm = det.find(".//nfe:NCM",ns).text
# Limpeza e transformação dos dados
xprod_clean = clean_xprod(xprod)
qcom_int = int(float(qcom))
vuncom_clean = vuncom.replace('.', ',')

# Adicionar os dados ao array


data.append({"xProd": xprod_clean, "qCom": qcom_int, "vUnCom":
vuncom_clean, "NCM": ncm})

return data

# Processar todos os arquivos na pasta


def process_folder(folder_path):
all_data = []
for root_dir, _, files in os.walk(folder_path): # Navega na pasta
e subpastas
for file_name in files:
if file_name.endswith(".xml"): # Filtra apenas os arquivos
XML
file_path = os.path.join(root_dir, file_name)
print(f"Processando: {file_path}") # Log para
monitorar os arquivos processados
try:
all_data.extend(process_xml(file_path))
except Exception as e:
print(f"Erro ao processar o arquivo {file_path}:
{e}")
return all_data

# Salvar os dados em Excel


def save_to_excel(data, output_file):
df = pd.DataFrame(data)
df.to_excel(output_file, index=False)

# Caminhos
folder_path = r"C:\Users\Vinicius\OneDrive\Área de Trabalho\xmls" #
Caminho da pasta onde estão os XMLs
output_file = r"C:\Users\Vinicius\OneDrive\Área de Trabalho\
notas_fiscais.xlsx" # Caminho do arquivo Excel de saída

# Execução
data = process_folder(folder_path)
save_to_excel(data, output_file)

print(f"Processamento concluído! O arquivo '{output_file}' foi


gerado.")

Você também pode gostar