Python 如何使用elementtree引用XML文件中的超链接

Python 如何使用elementtree引用XML文件中的超链接,python,xml,Python,Xml,我正在尝试从一个Excel文件中移动数据,该文件使用elementtree以XML格式格式化,其中一些单元格有一个与之相关联的超链接,我也想将其移动 输入如下: <Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x="urn:schemas-microsoft-com:office:excel"> <Table x:FullColumns="1" x:FullRows="1">

我正在尝试从一个Excel文件中移动数据,该文件使用elementtree以XML格式格式化,其中一些单元格有一个与之相关联的超链接,我也想将其移动

输入如下:

<Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x="urn:schemas-microsoft-com:office:excel">
  <Table x:FullColumns="1" x:FullRows="1">
    <Row>
      <Cell ss:StyleID="headerCenterWrap">
        <Data ss:Type="String"><![CDATA[Change Order #]]></Data>
      </Cell>
      <Cell ss:StyleID="headerCenterWrap">
        <Data ss:Type="String"><![CDATA[Summary]]></Data>
      </Cell>
      <Cell ss:StyleID="headerCenterWrap">
        <Data ss:Type="String"><![CDATA[Change Type]]></Data>
      </Cell>
      <Cell ss:StyleID="headerCenterWrap">
        <Data ss:Type="String"><![CDATA[Status]]></Data>
      </Cell>
      <Cell ss:StyleID="headerCenterWrap">
        <Data ss:Type="String"><![CDATA[Sched Start]]></Data>
      </Cell>
      <Cell ss:StyleID="headerCenterWrap">
        <Data ss:Type="String"><![CDATA[Sched End]]></Data>
      </Cell>
      <Cell ss:StyleID="headerCenterWrap">
        <Data ss:Type="String"><![CDATA[Open Date]]></Data>
      </Cell>
      <Cell ss:StyleID="headerCenterWrap">
        <Data ss:Type="String"><![CDATA[Close Date]]></Data>
      </Cell>
      <Cell ss:StyleID="headerCenterWrap">
        <Data ss:Type="String"><![CDATA[Need By]]></Data>
      </Cell>
      <Cell ss:StyleID="headerCenterWrap">
        <Data ss:Type="String"><![CDATA[Category]]></Data>
      </Cell>
      <Cell ss:StyleID="headerCenterWrap">
        <Data ss:Type="String"><![CDATA[Risk]]></Data>
      </Cell>
      <Cell ss:StyleID="headerCenterWrap">
        <Data ss:Type="String"><![CDATA[Assignee]]></Data>
      </Cell>
      <Cell ss:StyleID="headerCenterWrap">
        <Data ss:Type="String"><![CDATA[Requester]]></Data>
      </Cell>
      <Cell ss:StyleID="headerCenterWrap">
        <Data ss:Type="String"><![CDATA[Priority]]></Data>
      </Cell>
      <Cell ss:StyleID="headerCenterWrap">
        <Data ss:Type="String"><![CDATA[Parent]]></Data>
      </Cell>
      <Cell ss:StyleID="headerCenterWrap">
        <Data ss:Type="String"><![CDATA[CAB Approver]]></Data>
      </Cell>
    </Row>
    <Row>
      <Cell ss:HRef="https://" ss:StyleID="string_url">
        <Data ss:Type="String"><![CDATA[3392348]]></Data>
      </Cell>
      <Cell ss:StyleID="string">
        <Data ss:Type="String"><![CDATA[[] ASSET:]]></Data>
      </Cell>
      <Cell ss:StyleID="string">
        <Data ss:Type="String" />
      </Cell>
      <Cell ss:StyleID="string">
        <Data ss:Type="String"><![CDATA[Assigned]]></Data>
      </Cell>
      <Cell ss:StyleID="string">
        <Data ss:Type="String" />
      </Cell>
      <Cell ss:StyleID="string">
        <Data ss:Type="String" />
      </Cell>
      <Cell ss:StyleID="date">
        <Comment>
          <Data><![CDATA[-05:00]]></Data>
        </Comment>
        <Data ss:Type="DateTime"><![CDATA[2019-04-25T09:31:54]]></Data>
      </Cell>
      <Cell ss:StyleID="string">
        <Data ss:Type="String" />
      </Cell>
      <Cell ss:StyleID="string">
        <Data ss:Type="String" />
      </Cell>
      <Cell ss:StyleID="string">
        <Data ss:Type="String" />
      </Cell>
      <Cell ss:StyleID="string">
        <Data ss:Type="String" />
      </Cell>
      <Cell ss:StyleID="string">
        <Data ss:Type="String" />
      </Cell>
      <Cell ss:StyleID="string">
        <Data ss:Type="String" />
      </Cell>
      <Cell ss:StyleID="string">
        <Data ss:Type="String"><![CDATA[3]]></Data>
      </Cell>
      <Cell ss:StyleID="string">
        <Data ss:Type="String" />
      </Cell>
      <Cell ss:StyleID="string">
        <Data ss:Type="String" />
      </Cell>
    </Row>
  </Table>
</Workbook>

这是它的要点,但是elementree没有
.hyperlink
属性,所以它不起作用。

除了我正在使用的xml文件的奇怪格式之外,它看起来是评论员马克·托洛宁说的对

{urn:schemas microsoft com:office:spreadsheet}HRef=“https://”


我只需要做cell.attrib['{urn:schemas-microsoft-com:office:spreadsheet}HRef'],而不是cell.attrib['HRef']

发布真正的XML。IIRC ElementTree有一个
attrib
元素,它是元素属性的字典,因此您需要类似
cell.attrib['HRef']
的内容来访问它。您需要多少文件?文件中有很多私人信息,我必须在发布之前删除。我尝试了~cell.attrib['HRef']~但在查找.attribute元素后,我得到了错误
KeyError:'HRef'
,我尝试查看它在cell.attrib.items()中为name,value吐出了什么内容~print('{0}=“{1}'.format(name,value))~字符串的格式很奇怪{urn:schemas-microsoft-com:office:spreadsheet}HRef=“https://”就像我尝试枚举所有Excel版本的行时看到的行标记一样?在OOXML中,链接存储在相关的
.rels
文件中。
i = 0
for row in allrows:
    i += 1
    # print(row.tag + ' ', i)

    # Find all cells in this row
    allcells = list(row.iter('{urn:schemas-microsoft-com:office:spreadsheet}Cell'))

    # Start cell iteration here
    j = 0
    for cell in allcells:
        j += 1
        data = cell[0]
        # print(cell.tag + ' ', j, data.text)
        xworksheet.cell(row=i, column=j).value = data.text
        xworksheet.cell(row=i, column=j).hyperlink = cell.hyperlink