无法使用包含Python LXML库的Excel工作表中的数据创建XML
以下是完整的代码:无法使用包含Python LXML库的Excel工作表中的数据创建XML,python,xml,excel,soap,lxml,Python,Xml,Excel,Soap,Lxml,以下是完整的代码: import lxml.etree import lxml.builder import openpyxl wb = openpyxl.load_workbook('C:\Users\powell.mittra\Excel.xlsx') sheet = wb.get_sheet_by_name('Sheet1') x = sheet.cell(row=12, column=1).value E = lxml.builder.ElementMaker() ROOT = E.
import lxml.etree
import lxml.builder
import openpyxl
wb = openpyxl.load_workbook('C:\Users\powell.mittra\Excel.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')
x = sheet.cell(row=12, column=1).value
E = lxml.builder.ElementMaker()
ROOT = E.x
DOC = E.doc
FIELD1 = E.field1
FIELD2 = E.field2
the_doc = ROOT(
DOC(
FIELD1('some value1', name='blah'),
FIELD2('some value2', name='asdfasd'),
)
)
print lxml.etree.tostring(the_doc, pretty_print=True)
我得到以下输出,其中“x”作为字符串,而不是从x=sheet.cell(行=12,列=1)中获取值。值:
一些价值1
一些价值2
有人能告诉我我是否可以从excel工作表中传递根和其他元素中的值,或者不能使用LXML吗?对于这些目标,我更喜欢使用xml.etree库。这是来自python标准库的,所以您甚至不需要安装它
import openpyxl
import xml.etree.ElementTree as ET
wb = openpyxl.load_workbook('C:\Users\powell.mittra\Excel.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')
x = sheet.cell(row=12, column=1).value
root = ET.Element(x)
doc = ET.SubElement(root, "doc")
ET.SubElement(doc, "field1", name="blah").text = "some value1"
ET.SubElement(doc, "field2", name="asdfasd").text = "some value2"
tree = ET.ElementTree(root)
tree.write("filename.xml")
但如果您想使用lxml,您可以在最后更改标记
import lxml.etree
import lxml.builder
import openpyxl
wb = openpyxl.load_workbook('C:\Users\powell.mittra\Excel.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')
x = sheet.cell(row=12, column=1).value
E = lxml.builder.ElementMaker()
ROOT = E.x
DOC = E.doc
FIELD1 = E.field1
FIELD2 = E.field2
the_doc = ROOT(
DOC(
FIELD1('some value1', name='blah'),
FIELD2('some value2', name='asdfasd'),
)
)
the_doc.tag = x
print lxml.etree.tostring(the_doc, pretty_print=True)
示例中的代码与示例中的代码不同stacktrace@nick_gabpe抱歉,我更新了stacktrace
import lxml.etree
import lxml.builder
import openpyxl
wb = openpyxl.load_workbook('C:\Users\powell.mittra\Excel.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')
x = sheet.cell(row=12, column=1).value
E = lxml.builder.ElementMaker()
ROOT = E.x
DOC = E.doc
FIELD1 = E.field1
FIELD2 = E.field2
the_doc = ROOT(
DOC(
FIELD1('some value1', name='blah'),
FIELD2('some value2', name='asdfasd'),
)
)
the_doc.tag = x
print lxml.etree.tostring(the_doc, pretty_print=True)