在Excel中打印输出

我是Python的新手。 我想从多个XML文件中检索标签值,并将其打印在Excel表格中。 我试过并得到了除了Excel打印部分以外的脚本工作正常。

这是我的脚本

from xml.dom.minidom import parse, parseString import xlwt import os def sh(dir): for r,d,f in os.walk(dir): n=0 for files in f: if files.endswith(".xml"): print files dom=parse(os.path.join(r, files)) name = dom.getElementsByTagName('rev') title = dom.getElementsByTagName('title') a=xlwt.Workbook() sheet=a.add_sheet('sheet1') sheet.write(n, 0, files) sheet.write(n, 1, title[0].firstChild.nodeValue) sheet.write(n, 2, name[0].firstChild.nodeValue) n=n+1 a.save('sha.xls') print title[0].firstChild.nodeValue print name[0].firstChild.nodeValue sh("path") 

我坚持的问题是,输出仅在这些列(0,0),(0,1),(0,2)中打印。

如果我想要

 ABC DEF GHI 

我的输出

 GHI 

在(0,0),(0,1),(0,2)中。 所以我明白,每一个新的输出都被覆盖在现有的输出上,只显示最终的输出。 我怎样才能避免这个,得到我想要的?

您应该在循环之外定义您的工作簿和工作表:

 def sh(dir): a = xlwt.Workbook() sheet = a.add_sheet('sheet1') n = 0 for r,d,f in os.walk(dir): for files in f: if files.endswith(".xml"): print files dom=parse(os.path.join(r, files)) name = dom.getElementsByTagName('rev') title = dom.getElementsByTagName('title') sheet.write(n, 0, files) sheet.write(n, 1, title[0].firstChild.nodeValue) sheet.write(n, 2, name[0].firstChild.nodeValue) n += 1 print title[0].firstChild.nodeValue print name[0].firstChild.nodeValue a.save('sha.xls') 

此外,如果您不需要在子目录内searchxml文件,请考虑切换到glob.glob()而不是使用os.walk()

 def sh(dir): a = xlwt.Workbook() sheet = a.add_sheet('sheet1') n = 0 for f in glob.glob(os.path.join(dir, '*.xml')): dom = parse(os.path.join(dir, f)) name = dom.getElementsByTagName('rev') title = dom.getElementsByTagName('title') sheet.write(n, 0, f) sheet.write(n, 1, title[0].firstChild.nodeValue) sheet.write(n, 2, name[0].firstChild.nodeValue) n += 1 a.save('sha.xls')