美文网首页我爱编程
数据处理--excel/xml

数据处理--excel/xml

作者: Ginger12 | 来源:发表于2016-03-17 17:55 被阅读855次

    用xlrd处理excel的时候,报了以下的错误:

    xlrd.biffh.XLRDError: Unsupported format, or corrupt file:Expected BOF record; found '<?xml ve'

    后来发现,这个应该是一个xml类型的文件。为了提取表格内的内容,直接用xml的包进行操作。

    import xml.dom.minidom
    dom = xml.dom.minidom.parse('filename')
    root = dom.documentElement

    首先获取文件内的xml内容。
    将这个xml文件导出到一个txt内,分析xml里面的内容。
    截取其中一小段进行分析:

    <Row>
    <Cell ss:StyleID="s21"><Data ss:Type="String"> 名称 </Data></Cell>
    <Cell ss:StyleID="s21"><ss:Data ss:Type="String" xmlns="http://www.w3.org/TR/REC-html40"><B> <Font html:Face="宋体" x:CharSet="134">法人或负责人</Font><Font> </Font></B></ss:Data></Cell>
    <Cell ss:StyleID="s21"><Data ss:Type="String"> 电 话 </Data></Cell>
    <Cell ss:StyleID="s21"><Data ss:Type="String"> 移动电话 </Data></Cell>
    <Cell ss:StyleID="s21"><Data ss:Type="String"> 传 真 </Data></Cell>
    <Cell ss:StyleID="s21"><Data ss:Type="String"> 地 址 </Data></Cell>
    <Cell ss:StyleID="s21"><Data ss:Type="String"> 邮 编 </Data></Cell>
    </Row>

    一开始想直接提取最内存的<data>标签:

    use = root.getElementsByTagName('Data')
    content = use.firstChild.data

    想要提取“名称”,直接加一个计数的num,再num%7 == 0 进行提取。
    但是第二行中,data标签不是最内层,计数就全乱了。

    之后采取这几个标签就一层一层的提取。

    use = root.getElementsByTagName('Row')
    for li in use:
    temp = li.getElementsByTagName('Cell')[0]
    content = temp.getElementsByTagName('Data')[0].firstChild.data

    Row标签为最外层,取第一个Cell标签,再取其中的Data标签。打印出来内容。

    done。

    相关文章

      网友评论

        本文标题:数据处理--excel/xml

        本文链接:https://www.haomeiwen.com/subject/yijclttx.html