【问题标题】:How to read XML data and write to Excel sheet in Python for Selenium Automation如何在 Python 中为 Selenium 自动化读取 XML 数据并写入 Excel 工作表
【发布时间】:2021-05-20 13:26:37
【问题描述】:

我有一个场景,我需要从 XML 文件中获取数据并将其写入 Excel 工作表并使用同一个工作表进行数据处理。 我能够从 XML 读取数据,但无法将相同的数据(记录)插入到 Excel 文件中 我为此使用 OpenPyExcel,请提出任何替代方案并在这里帮助我。 虽然我没有看到任何错误,但没有任何内容写入 excel 表

import xml.etree.ElementTree as ET
import openpyexcel

tree = ET.parse("Test_Cust.xml")
root = tree.getroot()
workbook = openpyexcel.load_workbook("xml_excel.xlsx")
sheet = workbook["Sheet1"]

for items in root.iter():
    if items.tag == "Email":
        cust_email = items.text
    elif items.tag == "CompanyName":
        cust_cn = items.text
    elif items.tag == "FirstName":
        cust_fn = items.text
    elif items.tag == "LastName":
        cust_ln = items.text

        rownum = (sheet.max_row)
        print(rownum)
        colnum = (sheet.max_column)
        print(colnum)

        for r in range(2, rownum+1):
            for c in range(1, colnum+1):

                sheet.cell(row = r, column = c).value = cust_email
                sheet.cell(row=r, column=c).value = cust_email
                sheet.cell(row=r, column=c).value = cust_email
                sheet.cell(row=r, column=c).value = cust_email
                workbook.save("xml_excel.xlsx")
print("Done")

【问题讨论】:

  • 为什么在循环中将相同的值写入同一个单元格 4 次?我假设这与您的问题有关。
  • 您的缩进在您的实际来源中是否不同?如上所述,除非items.tag == "LastName" 为真,否则写入Excel 工作表的任何逻辑都不会发生,然后cust_email 只有在较早的迭代碰巧设置它时才会设置。如果缩进错误,请修复它。如果缩进是正确的,我可以看出这是你的问题。
  • @JeffC,我只是为了测试目的写了相同的值,
  • @CryptFool,我认为缩进是对的,因为使用相同的代码(值),我成功地将 XML 记录插入到 MySql 数据库表中
  • 嗨,不知何故,我能够将一些记录放入 Excel 工作表中。但始终只有 XML 文件的最后一项被写入 Excel 工作表的所有单元格

标签: python openpyxl readxml


【解决方案1】:

您是否尝试过使用这种语法写入单元格?:

 ws.cell(column=colnum,
         row=rownum, value='mydata')

注意:您将工作表保存在内部循环中。慢!

除此之外,这是一个有效的问题:如何轻松地将 XML 格式的数据读入 OpenPYXL?但问题更多是关于解析传入的 XML。完成后,写入 OpenPYXL 似乎微不足道。

(糟糕,我的错误:我的答案是针对 OpenPYXL,可能不适用于 openpyexcel)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-16
    • 2020-09-15
    • 1970-01-01
    • 2014-10-29
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多