在上一篇 Python写xml文件已经将所有订单写入xml文件,这一篇我们把xml文件中的内容读出来,写入excel文件。

  输入xml格式:

 <?xml version="1.0" encoding="utf-8"?>
<orderlist>
<order>
<customer>姓名1</customer>
<phone>123456</phone>
<address>成都</address>
<count>2</count>
</order>
<order>
<customer>姓名2</customer>
<phone>234567</phone>
<address>成都</address>
<count>5</count>
</order>
<order>
<customer>姓名3</customer>
<phone>345678</phone>
<address>成都</address>
<count>1</count>
</order>
</orderlist>

  输出excel格式(这里按点餐次数进行的降序排序):

aaarticlea/png;base64,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" alt="" />

  工具库选择:beautifulsoup+lxml用于处理xml文件(当然也可直接使用lxml), xlsxwriter用于写excel文件。

  思路也比较简单:找出xml文件中的每一个<order>,然后进行降序排序,再将每一个order信息写入excel文件,每个order一行。

  代码如下:

 # coding: utf-8

 import bs4
import xlsxwriter # 读取xml文件,写入excel
def xmlToExcel(file_xml, file_excel):
# 打开xml文件,并以此创建一个bs对象
xml = open(file_xml, 'r')
doc = bs4.BeautifulSoup(xml, 'xml') # 创建一个excel文件,并添加一个sheet,命名为orders
workbook = xlsxwriter.Workbook(file_excel)
sheet = workbook.add_worksheet('orders') # 设置粗体
bold = workbook.add_format({'bold': True}) # 先在第一行写标题,用粗体
sheet.write('A1', u'姓名', bold)
sheet.write('B1', u'电话', bold)
sheet.write('C1', u'点餐次数', bold)
sheet.write('D1', u'地址', bold) # 筛选出所有的<order>,这里使用的是CSS选择器
order = doc.select('order') # 以每个order的count元素,对order进行降序排序
sort_key = lambda a: int(a.count.text)
order.sort(key=sort_key, reverse=True) # 行号,具体订单信息从第二行开始
row = 2
# 将每一个订单写入excel
for x in order:
# 提取出具体信息
name = x.customer.text
phone = x.phone.text
cnt = x.count.text
addr = x.address.text # 将具体信息写入excel
sheet.write('A%d' % row, name)
sheet.write('B%d' % row, phone)
sheet.write('C%d' % row, cnt)
sheet.write('D%d' % row, addr) row += 1 # 关闭文件
xml.close()
workbook.close() # 测试代码
if __name__ == '__main__':
file1 = 'hh.xml'
file2 = 'hehe.xlsx' xmlToExcel(file1, file2)

读取xml文件,写入excel的更多相关文章

  1. C#读取xml文件写入到TreeView中

    开发过程中我们会遇到一些读取xml文件的时候,下面是我学习的整理. 用XmlDocument读取加载 XmlDocument doc = new XmlDocument(); doc.Load(&qu ...

  2. 在C#程序中,创建、写入、读取XML文件的方法

    一.在C#程序中,创建.写入.读取XML文件的方法 1.创建和读取XML文件的方法,Values为需要写入的值 private void WriteXML(string Values) { //保存的 ...

  3. 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂

    浅谈JS中的!=.== .!==.===的用法和区别   var num = 1;     var str = '1';     var test = 1;     test == num  //tr ...

  4. C#中常用的几种读取XML文件的方法

    1.C#中常用的几种读取XML文件的方法:http://blog.csdn.net/tiemufeng1122/article/details/6723764/

  5. 读取xml文件报错:Invalid byte 2 of 2-byte UTF-8 sequence。

    程序读取xml文件后,系统报“Invalid byte 2 of 2-byte UTF-8 sequence”错误,如何解决呢? 1.程序解析xml的时候,出现Invalid byte 2 of 2- ...

  6. C#读取XML文件的基类实现

    刚到新单位,学习他们的源代码,代码里读写系统配置文件的XML代码比较老套,直接写在一个系统配置类里,没有进行类的拆分,造成类很庞大,同时,操作XML的读写操作都是使用SetAttribute和node ...

  7. C#读取XML文件的方法

    先写一个xml文件: <?xml version="1.0" encoding="utf-8" ?> <bookste> <!-- ...

  8. Spring相关:jdom学习:读取xml文件

    云课堂马士兵的spring2.5课程中提到的 用JDOM读取XML文件需先用org.jdom.input.SAXBuilder对象的build()方法创建Document对象,然后用Document类 ...

  9. 在C#中创建和读取XML文件

    1.创建简单的XML文件 为了便于测试,我们首先创建控制台应用程序,项目命名为CreateXml,Program.cs代码如下: 这样会在C盘根目录下创建data2.xml文件,文件内容为 using ...

随机推荐

  1. PHP——小尾巴之权限管理

    流程: 在权限管理页面,默认显示用户的角色,更改复选框的按钮内容,可以改变角色,点击确定提交至数据库 在登陆之后,只显示该用户的角色所对应的权限 数据库: guanli.php <!DOCTYP ...

  2. PHP——数组和数据结构

    <body> <?php $arr[0]=5;//赋值定义 $arr[1]="aa"; print_r($arr); echo "<br /> ...

  3. Tensorflow 梯度下降实例

    # coding: utf-8 # #### 假设我们要最小化函数 $y=x^2$, 选择初始点 $x_0=5$ # #### 1. 学习率为1的时候,x在5和-5之间震荡. # In[1]: imp ...

  4. 【UVa】Headmaster's Headache(状压dp)

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  5. centos7安装avahi

    sudo yum install avahi sudo yum install avahi-tools 转自: http://unix.stackexchange.com/questions/1829 ...

  6. iframe超时处理。。。。

    function iframeTimeOut(url, timeOut_callback, width, height) { /// <summary> /// iframe超时处理 // ...

  7. 用 HTML5+ payment方法支付宝支付遇到的坑

    用 HTML5+ payment方法碰到的第一个坑就是如果是支付宝的话签约那种支付方式. 因为 Dcloud的文档没有更新的原因你可以看到他们说的都是‘移动支付’,但是你去支付宝平台的时候看到的根本就 ...

  8. 比较难的sql面试题--记录下来晚上做

    一组通话记录(总共500万条):ID 主叫号码 被叫号码 通话起始时间   通话结束时间           通话时长1  98290000 0215466546656 2007-02-01 09:4 ...

  9. MyBitis(iBitis)系列随笔之六:mybitis与spring集成

    目前Spring官方还没有出整合Mybatis的特性,但是mybitis比较给力,开发了一个mybatis-spring插件,达到与Spring的完美整合目的. 在与Spring集成前,一方面我们需要 ...

  10. 如何用ChemDraw中的ChemFinder查询反应过程

    ChemFinder是ChemDraw化学绘图软件的重要插件之一,ChemFinder是一个贮存众多化学信息的数据库管理系统,不仅可以用于查询基本化学结构,用户还可以用ChemFinder查询需要的反 ...