PYTHON-解析目录中的多个文件XML,并在多维数组&EXCEL-TABLE

时间:2019-06-17 16:00:23

标签: python multidimensional-array xml-parsing xlsxwriter excel-tables

我有一个问题,我应该从多个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()

这是控制台输出

  

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

if i insert the value of array in code

如果是动态填充数组,则为控制台输出

  

[[''TD01(fattura)','Neoss Italia S.r.l.','2255.48']]

     

[[['TD01(fattura)','ASTIDENTAL DI SABBIONE S.P.A.','2717.60']]

是excel文件是这样的吗 when I fill the array dynamically

总结->我希望一旦所有XML文件都被解析了,数据将被插入到excel表中,而另一个则插入其中。请原谅这么长时间,首先请原谅我的英语。帮帮我:( !!

0 个答案:

没有答案