Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用包含Python LXML库的Excel工作表中的数据创建XML_Python_Xml_Excel_Soap_Lxml - Fatal编程技术网

无法使用包含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)