【发布时间】: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 工作表的所有单元格