Ficiao, avevo detto ceh avevo risolto ma in realtà sono stato stupido, perchè non ho risolto un bel niente.
ho un problema che non capisco da cosa derivi, molto probabilmente esclusivamente logico.
come dicevo sopra, ho poggiato le fatture elettroniche in una cartella che ha delle sottocartelle divise per nome operatore e ciascuna ha le proprie fatture.
Fin qui tutto bene, riesco anche a leggere tranquillamente il file xml importandomi l'output, il problema è un altro probabilmente più semplice ma di cui io non riesco a capire.
Nel codice che vedete sotto, tutti print mostrano tutti i campi che dovrebbero uscire, mentre nel file excel sembra proprio saltare alcuni xml, e non riesco a capire il perchè.
class xml_man:
from datetime import date
import xlsxwriter
newdate = date.today()
datestr = newdate.strftime('%m%d%y')
strpath = f'{datestr}.xlsx'
reinvoice = xlsxwriter.Workbook(strpath)
worksheet = reinvoice.add_worksheet()
def scan_file(self):
import os
import xml.etree.cElementTree as ET
import xlsxwriter
# files = []
fdir = "\Account Payable"
row = 0
column = 0
for root, dirs, files in os.walk(fdir):
column = 0
for file in files:
varpath = os.path.join(root, file)
print(varpath)
obj = ET.ElementTree(file=varpath)
for denomstr in obj.iterfind('FatturaElettronicaHeader/CedentePrestatore/DatiAnagrafici/Anagrafica/Denominazione'):
print(denomstr.text)
for branch in obj.iterfind('FatturaElettronicaHeader/CessionarioCommittente/DatiAnagrafici/Anagrafica/Denominazione'):
print(branch.text)
for comune in obj.iterfind('FatturaElettronicaHeader/CessionarioCommittente/Sede/Comune'):
print(comune.text)
for typedoc in obj.iterfind('FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento/TipoDocumento'):
print(typedoc.text)
for numedoc in obj.iterfind('FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento/Numero'):
print(numedoc.text)
for dataedoc in obj.iterfind('FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento/Data'):
print(dataedoc.text)
for imponibile in obj.iterfind('FatturaElettronicaBody/DatiBeniServizi/DatiRiepilogo/ImponibileImporto'):
print(imponibile.text)
for natura in obj.iterfind('FatturaElettronicaBody/DatiBeniServizi/DatiRiepilogo/Natura'):
print(natura.text)
for ivaperc in obj.iterfind('FatturaElettronicaBody/DatiBeniServizi/DatiRiepilogo/RiferimentoNormativo'):
print(ivaperc.text)
self.worksheet.write(row, column, denomstr.text)
column = column + 1
self.worksheet.write(row, column, branch.text)
column = column + 1
self.worksheet.write(row, column, comune.text)
column = column + 1
self.worksheet.write(row, column, typedoc.text)
column = column + 1
self.worksheet.write(row, column, numedoc.text)
column = column + 1
self.worksheet.write(row, column, dataedoc.text)
column = column + 1
self.worksheet.write(row, column, imponibile.text)
column = column + 1
self.worksheet.write(row, column, natura.text)
column = column + 1
self.worksheet.write(row, column, ivaperc.text)
column = column + 1
self.worksheet.write(row, column, varpath)
column = 0