读取xml文件,写入excel

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

  输入xml格式:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <orderlist>
 3     <order>
 4         <customer>姓名1</customer>
 5         <phone>123456</phone>
 6         <address>成都</address>
 7         <count>2</count>
 8     </order>
 9     <order>
10         <customer>姓名2</customer>
11         <phone>234567</phone>
12         <address>成都</address>
13         <count>5</count>
14     </order>
15     <order>
16         <customer>姓名3</customer>
17         <phone>345678</phone>
18         <address>成都</address>
19         <count>1</count>
20     </order>
21 </orderlist>

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

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

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

  代码如下:

 1 # coding: utf-8
 2
 3 import bs4
 4 import xlsxwriter
 5
 6 # 读取xml文件,写入excel
 7 def xmlToExcel(file_xml, file_excel):
 8     # 打开xml文件,并以此创建一个bs对象
 9     xml = open(file_xml, ‘r‘)
10     doc = bs4.BeautifulSoup(xml, ‘xml‘)
11
12     # 创建一个excel文件,并添加一个sheet,命名为orders
13     workbook = xlsxwriter.Workbook(file_excel)
14     sheet = workbook.add_worksheet(‘orders‘)
15
16     # 设置粗体
17     bold = workbook.add_format({‘bold‘: True})
18
19     # 先在第一行写标题,用粗体
20     sheet.write(‘A1‘, u‘姓名‘, bold)
21     sheet.write(‘B1‘, u‘电话‘, bold)
22     sheet.write(‘C1‘, u‘点餐次数‘, bold)
23     sheet.write(‘D1‘, u‘地址‘, bold)
24
25     # 筛选出所有的<order>,这里使用的是CSS选择器
26     order = doc.select(‘order‘)
27
28     # 以每个order的count元素,对order进行降序排序
29     sort_key = lambda a: int(a.count.text)
30     order.sort(key=sort_key, reverse=True)
31
32     # 行号,具体订单信息从第二行开始
33     row = 2
34     # 将每一个订单写入excel
35     for x in order:
36         # 提取出具体信息
37         name = x.customer.text
38         phone = x.phone.text
39         cnt = x.count.text
40         addr = x.address.text
41
42         # 将具体信息写入excel
43         sheet.write(‘A%d‘ % row, name)
44         sheet.write(‘B%d‘ % row, phone)
45         sheet.write(‘C%d‘ % row, cnt)
46         sheet.write(‘D%d‘ % row, addr)
47
48         row += 1
49
50     # 关闭文件
51     xml.close()
52     workbook.close()
53
54 # 测试代码
55 if __name__ == ‘__main__‘:
56     file1 = ‘hh.xml‘
57     file2 = ‘hehe.xlsx‘
58
59     xmlToExcel(file1, file2)
时间: 2024-08-09 18:42:25

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

Excel开发学习笔记:读取xml文件及csv文件

读取xml文件 有好多种读取xml的方式,xmlDOM比较常见,我使用了另外一种,它以数据流的方式打开文件并读取内容 Imports System.Xml  Dim group As New List(Of String)  Using reader As XmlReader = XmlReader.Create(OpenFileDialog2.FileName)      While reader.ReadToFollowing("group")          reader.Mo

使用Pull解析器生成XML文件和读取xml文件

有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中:或者使用DOM API生成XML文件,或者也可以使用pull解析器生成XML文件,这里推荐大家使用Pull解析器. 一.布局界面 [html] view plaincopyprint? <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

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

var num = 1;    var str = '1';    var test = 1;    test == num  //true 相同类型 相同值    test === num //true 相同类型 相同值    test !== num //false test与num类型相同,其值也相同, 非运算肯定是false    num == str  //true 把str转换为数字,检查其是否相等.    num != str  //false == 的 非运算    num ==

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

刚到新单位,学习他们的源代码,代码里读写系统配置文件的XML代码比较老套,直接写在一个系统配置类里,没有进行类的拆分,造成类很庞大,同时,操作XML的读写操作都是使用SetAttribute和node.Attribute(name)方法,因此,想到结合之前所做的XML操作,完成了一个能够读取XML文件的基类,便于以后的使用. PS:即使再老套的代码,目前也不敢进行优化,一是水平不行,二是不敢. 使用静态扩展类,扩展了几个经常使用的类型,能够方便数据的读写. 操作XML的类,可以直接继承BaseL

读取XML文件的指定节点的值 并转换为Item

cmb_State_Send.ItemsSource = null; XmlDocument doc = new XmlDocument(); doc.Load("D:\\模板\\WorkstationState_Config.xml"); //加载Xml文件 XmlElement rootElem = doc.DocumentElement; //获取根节点 XmlNode xn = rootElem.SelectSingleNode("//Workstation[@Nam

Java使用相对路径读取xml文件

java使用相对路径读取xml文件 博客分类: java javaXMLJavaWeb 一.xml文件一般的存放位置有三个: 1.放在WEB-INF下: 2.xml文件放在/WEB-INF/classes目录下或classpath的jar包中: 3.放在与解析它的java类同一个包中,不一定是classpath: 二.相对应的两种使用相对路径的读取方法: 方法一:(未验证) 将xml文件放在WEB-INF目录下,然后 程序代码: InputStream is=getServletContext(

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

XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具.XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用.微软也提供了一系列类库来倒帮助我们在应用程序中存储XML文件. “在程序中访问

C# 读取xml文件忽略xml文件的注释

默认情况下,读取xml文件是不忽略注释的,这样读取带注释的节点会造成异常,那么怎么屏蔽掉这些注释呢? 方案如下: XmlDocument doc = new XmlDocument(); XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true; //xmlFilePath:xml文件路径 XmlReader reader = XmlReader.Create(xmlFilePath,

DataSet - DataTable - DataRow 读取 xml 文件 + 搜索

DataSet ds = XmlHelper.GetDataSetByXml(AppDomain.CurrentDomain.BaseDirectory + "/Config/ConfigName.xml");//取得xml文件 DataTable dt = ds.Tables["table_Name"];//取得xml文件的节点内容 DataRow[] dr = dr = ds.Tables["table_Name"].Select("