讀取xml檔案,寫入excel

來源:互聯網
上載者:User

標籤:

  在上一篇 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>
View Code

  輸出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,命名為orders13     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 = 234     # 將每一個訂單寫入excel35     for x in order:36         # 提取出具體資訊37         name = x.customer.text38         phone = x.phone.text39         cnt = x.count.text40         addr = x.address.text41 42         # 將具體資訊寫入excel43         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 += 149 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)

 

讀取xml檔案,寫入excel

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.