Python Show-Me-the-Code 第 0014,0015,0016 題 寫Excel文件

第 0014 題: 純文本文件 student.txt爲學生信息, 裏面的內容(包括花括號)如下所示:

{
    "1":["張三",150,120,100],
    "2":["李四",90,99,95],
    "3":["王五",60,66,68]
}

請將上述內容寫到 student.xls 文件中,如下圖所示:

student.xls

  • 閱讀資料 騰訊遊戲開發 XML 和 Excel 內容相互轉換

第 0015 題: 純文本文件 city.txt爲城市信息, 裏面的內容(包括花括號)如下所示:

{
    "1" : "上海",
    "2" : "北京",
    "3" : "成都"
}

請將上述內容寫到 city.xls 文件中,如下圖所示:

city.xls

第 0016 題: 純文本文件 numbers.txt, 裏面的內容(包括方括號)如下所示:

[
    [1, 82, 65535],
    [20, 90, 13],
    [26, 809, 1024]
]

請將上述內容寫到 numbers.xls 文件中,如下圖所示:

numbers.xls


思路:

嗯這三題看起來都是差不多的,都屬於使用Python來把數據寫入Excel文檔的問題,解決的方法也是差不多,所以就寫在一起了。Python擁有強大的標準庫,但是這個標準庫好像並沒有用於處理excel文件的庫(什麼鬼)。但肯定有強大的第三方庫可以的,對不?

找了一下,發現有如下三個庫:xlrd,xlwt和xlutils。其中,xlrd只能讀取xls,xlwt只能新建xls(不可以修改),xlutils能將xlrd.Book轉爲xlwt.Workbook,從而得以在現有xls的基礎上修改數據,並創建一個新的xls,實現修改。
看樣子好像xlutils是很強大的,不過這裏我們用xlwt就可以解決問題啦。

數據是存在文件中的,所以首先要切換到文件所在目錄,然後打開文件,讀取出來後解析成json格式,再按照要求寫進表格中就ok了。
發現了個問題,就是在json.load時得到的dict的元素位置和轉化前可能會不一致,因此要使用OrderedDict

步驟:

安裝xlwt庫(如果沒有): sudo pip install xlwt
切換目錄,打開文件
讀取文件內容
使用json解析
寫入xls文件


代碼:

0014.寫excel文件1.py

#!/usr/bin/env python
#coding: utf-8
import os
import json
import xlwt
from collections import OrderedDict

# 存放文件的目錄
filepath = '/home/bill/Desktop'

def run():
    os.chdir(filepath)
    # 讀取文件內容
    with open('student.txt') as f:
        content = f.read()
    # 轉爲json, 注意轉化後的dict的元素位置和轉化前可能會不一致,因此要使用OrderedDict
    d = json.loads(content, object_pairs_hook=OrderedDict)
    file = xlwt.Workbook()
    # 添加sheet
    table = file.add_sheet('test')
    for row, i in enumerate(list(d)):
        table.write(row, 0, i)
        for col, j in enumerate(d[i]):
            table.write(row, col+1, j)
    file.save('student.xls')

if __name__ =="__main__":
    run()

0015.寫excel文件2.py

#!/usr/bin/env python
#coding: utf-8
import os
import json
import xlwt
from collections import OrderedDict

# 存放文件的目錄
filepath = '/home/bill/Desktop'

def run():
    os.chdir(filepath)
    # 讀取文件內容
    with open('city.txt') as f:
        content = f.read()
    # 轉爲json, 注意轉化後的dict的元素位置和轉化前可能會不一致,因此要使用OrderedDict
    d = json.loads(content, object_pairs_hook=OrderedDict)
    file = xlwt.Workbook()
    # 添加sheet
    table = file.add_sheet('test')
    for row, i in enumerate(list(d)):
        table.write(row, 0, i)
        table.write(row, 1, d[i])
    file.save('city.xls')

if __name__ =="__main__":
    run()

0016.寫excel文件3.py

#!/usr/bin/env python
#coding: utf-8
import os
import json
import xlwt
from collections import OrderedDict

# 存放文件的目錄
filepath = '/home/bill/Desktop'

def run():
    os.chdir(filepath)
    # 讀取文件內容
    with open('numbers.txt') as f:
        content = f.read()
    # 轉爲json, 注意轉化後的dict的元素位置和轉化前可能會不一致,因此要使用OrderedDict
    d = json.loads(content, object_pairs_hook=OrderedDict)
    file = xlwt.Workbook()
    # 添加sheet
    table = file.add_sheet('test')
    for row, i in enumerate(d):
        for col, j in enumerate(i):
            table.write(row, col, j)
    file.save('numbers.xls')

if __name__ =="__main__":
    run()


運行後生成的表格:

這裏寫圖片描述

student.xls:
這裏寫圖片描述

city.xls:
這裏寫圖片描述

numbers.xls:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章