Создание XML из данных Excel с Python - PullRequest
0 голосов
/ 21 сентября 2019

Я пытаюсь создать XML-файл из электронной таблицы Excel, используя python, но у меня возникают проблемы при построении структуры.XML-схема уникальна для программного обеспечения, поэтому открытие нескольких тегов и окончание нескольких будет проще записать в файл XML, как переменные, как показано ниже.Они являются постоянными, поэтому они извлекаются из "

. Я считаю, что скрипту необходимо циклически проходить по другому листу, являющемуся листом" .XML Framework "для построения структуры .xml, так как это значения, которые в конечном итоге изменятся. Структураэтого листа приведено ниже.

здесь представлена ​​структура .xml, из которой питон выводит данные до уникальных значений, а изменяющиеся значения отображаются жирным шрифтом. Это показывает только одну строку данныхиз рабочей книги. Когда в рабочей книге есть вторая строка, структура .xml повторяется снова, где она начинается.

Структура данных в листе Excel ".XML Framework":

col 1 = **equals**
col 2 = **74**
col 3 = **Data**"
col 4 = col 3
col 5 = **Name 07**
col 6 = col 5
col 7 = **wstring**
col 8 = /**SM15-HVAC-SUPP-TM-37250-ST**

ЭТО ЖЕЛАЕМАЯ СТРУКТУРА XML

<?xml version="1.0" encoding="UTF-8" ?>
<exchange xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://download.autodesk.com/us/navisworks/schemas/nw-exchange-12.0.xsd" units="m" filename="" filepath="">
  <selectionsets>
    <selectionset name="Dev_1">
      <findspec mode="all" disjoint="0">
        <conditions>
            <condition test="**equals**" flags="**74**">
              <category>
                <name internal="**Data**">**Data**</name>
              </category>
              <property>
                <name internal="**Name 07**">**Name 07**</name>
              </property>
              <value>
                <data type="**wstring**">/**SM15-HVAC-SUPP-TM-37250-ST**</data>
              </value>
            </condition>
          </conditions>
    <locator>/</locator>
  </findspec>
</exchange>

Вот моя попытка с питона:

path = (r"C:\\Users\\ciara\\desktop\\")
book = os.path.join(path + "Search_Set.xlsm")
wb = openpyxl.load_workbook(book)
sh = wb.get_sheet_by_name('.XML Framework')
df1 = pd.read_excel(book, "<CLEAN>", header=None)

#opening 5 lines of .xml search
print(df1)
cV1 = df1.iloc[0,0] #xml header
print (cV1)
cV2 = df1.iloc[1,0] #<exchange>
print (cV2)
cV3 = df1.iloc[2,0] #<selectionsets>
print (cV3)
cV4 = df1.iloc[3,0] #<selection set name>
print (cV4)
cV5 = df1.iloc[4,0] #<findspec mode>
print (cV5)
cV6 = df1.iloc[5,0] #<findspec mode>
print (cV6)

E = lxml.builder.ElementMaker() 
root = ET.Element(cV1)
doc0 = ET.SubElement(root, cV2)
doc1 = ET.SubElement(doc0, cV3)
doc2 = ET.SubElement(doc1, cV4)
doc3 = ET.SubElement(doc2, cV5)
doc4 = ET.SubElement(doc3, cV6)


the_doc = root(
        doc0(
                doc1(
                        doc2(
                                doc3(
                                    FIELD1('condition test=', name='blah'),
                                    FIELD2('some value2', name='asdfasd'),
                                    )
                                )
                            )
                        )   
                    )   

print (lxml.etree.tostring(the_doc, pretty_print=True))

tree = ET.ElementTree(root)
tree.write("filename.xml")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...