PYTHON-синтаксический анализ нескольких файлов XML, расположенных в каталоге, и загрузка данных в многомерный массив и EXCEL-TABLE - PullRequest
0 голосов
/ 17 июня 2019

У меня есть проблема, я должен извлечь данные из нескольких файлов XML и загрузить их в EXCEL-TABLE ... Я опишу лучше ---> В этот момент я могу проанализировать файл XML и через библиотеку xlsxwriter я могу создатьТаблица в Excel и вставьте значения только тогда, когда у меня есть больше XML-файлов, массив перезаписывается ...

for filename in filenames:  
tree = ET.parse(filename)
root = tree.getroot()

PrimoFor=[] #Array dove vengono appesi tutti i dati estratti di un file

for DatiGeneraliDocumento in root.iter('DatiGeneraliDocumento'):
    for FiglioDatiGeneraliDocumento in DatiGeneraliDocumento:
        if(FiglioDatiGeneraliDocumento.tag=='TipoDocumento'):
            if(FiglioDatiGeneraliDocumento.text=='TD04'):
                Concatenazione=FiglioDatiGeneraliDocumento.text + str('(NotaCredito)')
                PrimoFor.append(Concatenazione)
            else:
                Concatenazione=FiglioDatiGeneraliDocumento.text + str('(fattura)')
                PrimoFor.append(Concatenazione)
            print(FiglioDatiGeneraliDocumento.tag,FiglioDatiGeneraliDocumento.text)
for CedentePrestatore in root.iter('CedentePrestatore'):
    for TagFiglioCedentePrestatore in CedentePrestatore:
            for TagNipoteCedentePrestatore in TagFiglioCedentePrestatore:
                for ProNipoteCedentePrestatore in TagNipoteCedentePrestatore:
                    if(ProNipoteCedentePrestatore.tag=='Denominazione'):
                        print(ProNipoteCedentePrestatore.tag,ProNipoteCedentePrestatore.text)
                        PrimoFor.append(ProNipoteCedentePrestatore.text)
for ImportoTotaleDocumento in root.iter('ImportoTotaleDocumento'):
    print(ImportoTotaleDocumento.tag,ImportoTotaleDocumento.text)
    PrimoFor.append(ImportoTotaleDocumento.text) 
    data=[PrimoFor]
    worksheet.add_table('A1:Z3', {'data':data,
                                      'autofilter': False,
                                      'columns' : [{'header': 'Ragione sociale'},
                                      {'header': 'Data Fattura'},
                                      {'header': 'Numero Fattura'},
                                      {'header': 'Filiale'},
                                      {'header': 'Indirizzo'},
                                      {'header': 'COD FILIALE'},
                                      {'header': 'TIPODOC ft o NC'},
                                      {'header': 'P IVA NEOSS'},
                                      {'header': 'Totale Documento'},
                                      {'header': 'Imponibile1'},
                                      {'header': 'Aliquota1'},
                                      {'header': 'lva1'},
                                      {'header': 'Imponibile2'},
                                      {'header': 'Aliquote2'},
                                      {'header': 'lva2'},
                                      {'header': 'Imponibile3'},
                                      {'header': 'Aliquote3'},
                                      {'header': 'lva3'},
                                      {'header': 'da data competenza'},
                                      {'header': 'a data competenza'},
                                      {'header': 'imponibile ritenuta'},
                                      {'header': 'flag minimi'},
                                      {'header': 'mastro'},
                                      {'header': 'capoconto'},
                                      {'header': 'conto'},
                                      {'header': 'sottoconto'},
                                      ]})
print(data)
workbook.close()    

Этот код берет все файлы XML в папке от меня и извлекает данные из них,затем эти данные помещаются в массив и затем заполняются в таблице Excel.Проблема в том, что массив перезаписывается при каждой обработке XML-файла. Я покажу вам, как бы я хотел, чтобы результат был

Если я заполню массив кодом.

enter code heredata = [
['Apples', 10000, 5000, 8000, 6000],
['Pears',   2000, 3000, 4000, 5000],
['Bananas', 6000, 6000, 6500, 6000],
['Oranges',  500,  300,  200,  700],]

worksheet.add_table('A1:E4', {'data':data,
                          'autofilter': False,
                          'columns' : [{'header': 'Ragione sociale'},
                                      {'header': 'Quarter 1'},
                                      {'header': 'Quarter 2'},
                                      {'header': 'Quarter 3'},
                                      {'header': 'Quarter 4'},
                                      ]}) 
      print(data)
      workbook.close()

Это консольный вывод

[['' Apple ', 10000, 5000, 8000, 6000], [' Pears ', 2000, 3000, 4000, 5000], [' Bananas ',6000, 6000, 6500, 6000], ['Апельсины', 500, 300, 200, 700]]

, если я вставлю значение массива в код

Вместо этого это вывод консоли, если он динамически заполняет массив

[['TD01 (fattura)', 'Neoss Italia Srl', '2255.48']]

[['TD01 (fattura)', 'ASTIDENTAL DI SABBIONE SPA', '2717.60']] *

- это файл Excel, который выглядит следующим образом при динамическом заполнении массива

Подводя итог -> Я хотел бы, чтобы после того, как все файлы XML были проанализированы, данные будут вставлены в таблицу Excel один под другим.Извините текст так долго и прежде всего извините мой английский.Помоги мне :( !!

...